关于数据抓取之xpath提取text为空问题的原因和解决方案

简介:     今天在抓取淘宝网网页的时候,使用了: #店名 shopname = driver.find_element_by_xpath(".//*[@id='page']/div[2]/div/div[2]/ul/li[1]/a/span").
    今天在抓取淘宝网网页的时候,使用了:
  1. #店名
  2. shopname = driver.find_element_by_xpath(".//*[@id='page']/div[2]/div/div[2]/ul/li[1]/a/span").text.strip()
  3. #掌柜名
  4. dealername = driver.find_element_by_xpath("./html/head/title").text.strip()
  5. dealername = dealername[dealername.find('-')+1:dealername.rfind('-')]
    对于xpath,当然好用,毕竟Firefox和Chrome可以自动生成,所以爬虫开发的速度会更快。然而,得到的结果很惊讶,全部为空。我突然之间陷入了迷惑,不可能是因为版本的问题吧,毕竟selenium已经这么成熟了。下午试了很多次,都是无功而返,我非常沮丧。
    晚上继续,首先要找到问题出在什么地方。使用page_source查看,发现网页代码一应俱全。难道是非得把鼠标移动到特定位置,弹出菜单激活Js?于是使用:
  1. driver.get('https://shop594784981.taobao.com')
  2. time.sleep(3)
  3. menu = driver.find_element_by_xpath("//*[@id='header-content']/div[2]/p/span[1]/span[1]/a")
  4. ActionChains(driver).move_to_element(menu).perform()
  5. time.sleep(2)
      弹出了隐含层,又如何呢,还是不行啊。~~~接着再尝试,试试其他
  1. print(driver.find_element_by_id("J_TEnterShop").text)
     使用ID就可以了。然后,我就非常仔细地观察了ID这块的HTML结构特点,发现确实和之前要抓的结构不一样。接着我又试了一下这个Id的xpath,顺利提取。看来不是text方法的问题,也不是xpath的问题。而是结构的问题,对于xpath能提取什么样的结构我之前是没有弄清楚,现在举例说明一下:
  1. span class="shop-name">
  2.                   店铺:
  3.                                         a href="//shop124836129.taobao.com?spm=a1z10.1-c.0.0.XEwkxh" target="_blank" class="J_TGoldlog" data-goldlog-id="/tbwmdd.1.044" data-spm-anchor-id="a1z10.1-c.0.0">锦文图书批发i id="J_TEnterShop">进入店铺/i>/a>
  4.                 /span>

    我只想提取店铺名称,但店铺名称在 XXYY 结构中,目标是XX,使用xpath提取的XX路径使用text提取的结果是空。但YY的xpath提取则是“进入店铺”,使用整个a链接的xpath是“锦文图书批发进入店铺”。所以xpath看来要使用标签封闭结构才行。
   那么问题来了,怎么提取“锦文图书批发”呢?
    有两种方法,一是换一个具有“锦文图书批发”的地方提取,二是使用XXYY - YY的方式。
相关文章
|
JSON 文字识别 API
ocr表格识别返回的json结果,转成excel,这个转化有对应的逻辑代码吗?
ocr表格识别返回的json结果,转成excel,这个转化有对应的逻辑代码吗?
495 0
|
3月前
|
JSON 文字识别 数据格式
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
|
3月前
|
人工智能 Java
AI大模型----SpringBoot添加放行最简单的方式@AuthAccess,问题库构思,概念title,答案text,搜索search
AI大模型----SpringBoot添加放行最简单的方式@AuthAccess,问题库构思,概念title,答案text,搜索search
|
3月前
|
前端开发
css 超实用的:empty —— 隐藏空元素、缺失字段智能提示
css 超实用的:empty —— 隐藏空元素、缺失字段智能提示
66 0
|
12月前
|
自然语言处理 API 数据安全/隐私保护
InstaGraph:将文本和URL转化为知识图谱的强大工具
InstaGraph 可以将文本或 URL 转化为美观的知识图谱,帮助你更清晰地理解复杂主题中不同实体之间的关系,InstaGraph 的自然语言处理能力是由 OpenAI 的 GPT-3.5 技术提供支持的。
|
5月前
|
JSON JavaScript 数据格式
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
702 2
|
5月前
|
SQL JSON 关系型数据库
【SQL编程】MySQL 5.7.28 版本使用 SQL 直接解析 JSON 字符串(判断是否是合法JSON类型+文本深度+文本长度+值类型+keys获取+值获取+不同深度数据获取)
【SQL编程】MySQL 5.7.28 版本使用 SQL 直接解析 JSON 字符串(判断是否是合法JSON类型+文本深度+文本长度+值类型+keys获取+值获取+不同深度数据获取)
97 0
|
XML 数据采集 Web App开发
XPath数据提取与贴吧爬虫应用示例
XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言。它提供了一种简洁的方式来遍历和提取XML文档中的数据。
106 1
|
前端开发
前端学习案例2-输入url到页面呈现的过程2
前端学习案例2-输入url到页面呈现的过程2
50 0
前端学习案例2-输入url到页面呈现的过程2
|
前端开发
前端学习案例1-输入url到页面呈现的过程1
前端学习案例1-输入url到页面呈现的过程1
77 0
前端学习案例1-输入url到页面呈现的过程1