在使用scrapy框架做爬虫时,有两种方式对标签内容进行提取:css和Xpath。基本的标签内容,属性提取都很容易。但对于多层嵌套的标签,如何提取到最里层的内容呢?

举个栗子:
网页HTML内容是

"<p id='test'>hello<b>world!</b></p>"

如何一下子提取到hello world!呢?
用css的话需要写两次选择:

response.css('#test::text').extract_first()
response.css('#test b::text').extract_first()

这个简单的例子还似乎可以这样做,但是实际项目中可没这么简单,往往是整篇文章都是嵌套的段落,文字,外面是p便签,里面是多层span标签,而且个数还不一致,根本无法一个个写。。。

因此,需要一种一次性提取最里层内容的方法!

用Xpath可以做到


response.xpath("string(//p[@id='test'])").extract()
# 或者
response.xpath("//p[@id='test']").xpath('string(.)').extract()# 输出:['helloworld!']

至于xpath的用法,可以参考这篇文章的总结:
https://www.cnblogs.com/MUMO/p/5732836.html

参考文章:
http://www.cnblogs.com/qlshine/p/5926101.html
https://www.cnblogs.com/MUMO/p/5732836.html

scrapy使用用Xpath提取深层标签相关推荐

  1. xpath提取html属性,xpath提取 html标签的文字内容

    前言: 做爬虫的过程中经常需要对html标签的文字内容进行提取,有几种情况 1.提取属性的值,2.提取标签的值,3.提取段落的所有文字 本文用的是 scrapy 的框架,用 response 做响应 ...

  2. python xpath提取td标签_Python Xpath 提取html整个元素(标签与内容)

    提取html某标签中文字时,文字中含有:"2O5",导致提取的文字不符合预期. 解决方法: #coding=utf-8 from lxml import etree from HT ...

  3. scrapy xpath获得a标签内的br em标签文字内容

    scrapy xpath获得a标签内的br em标签文字内容 需要爬取的标签 实例 需要爬取的标签 <a title="[完整版]大哥别杀我" href="//ww ...

  4. 请问一下用xpath提取信息时,遇到网页文本中有br标签,提取不到br标签后的内容怎么处理呢

    # Xpath提取 node_list = response.xpath("//div[@class='article block untagged mb15 typs_hot']" ...

  5. xpath contains_Python 爬虫进阶: Scrapy Shell 和 Xpath 学习心得

    说来好笑,刚学习爬虫的时候为了调试代码,是将网页下载到本地,再用beautifulsoup载入本地网页文件进行分析,以保证选择器编写正确. Scrapy内置的调试器Scrapy Shell正好作此用途 ...

  6. 大数据标签获取处理步骤_基于大数据的用户深层标签挖掘方法与流程

    本发明涉及大数据应用技术领域,尤其涉及一种基于大数据的用户深层标签挖掘方法. 背景技术: 用户画像建立的过程就是添加相应的标签,在数据挖掘领域称为标签化.标签是通过对用户信息分析而得到的高度精炼的特征 ...

  7. Scrapy爬虫:XPath语法

    Scrapy爬虫:XPath语法 路径表达式 路径案例 谓语(Predicates) 谓语实例 选取未知节点 实例 选取若干路径 实例 Xpath轴 功能函数 注意事项: 提取内容 XPath 使用路 ...

  8. DOM+XPath提取规则注记!

    下面是使用DOM+Xpath提取html中页面时经常使用的Xpath规则的一些示例: XPath相关的规则 没有属性 //B[not(@*)] 没有类属性 //B[not(@class)] 要求链接有 ...

  9. xpath 取标签下所有文字内容_对Xpath 获取子标签下所有文本的方法详解

    对Xpath 获取子标签下所有文本的方法详解 在爬虫中遇见这种怎么办 想提取名称, 但是 名称不在一个标签里 使用xpath string()方法 例如 data.xpath("string ...

最新文章

  1. mysql server 5.6使用_关于MySQLServer5.6配置问题
  2. spring实例教程
  3. xcode6是否导入framework
  4. SQL删除数据表中指定列重复的数据
  5. .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
  6. Rails5 任务注释
  7. 图解 Git,一目了然!
  8. Ruby静态分析工具检视:metric_fu, Simian, Saikuro以及其他
  9. 软件质量控制、质量保证和质量管理区别
  10. 搬: 含有对象成员指针的类的对象成员指针初始化问题
  11. 湖北大学98届计算机网络,我校学子在“H3C”杯全国大学生网络技术大赛中获一等奖...
  12. 帅爆! 赛博朋克特效实现
  13. 联想小新安装windows 7
  14. FCW前车碰撞预警的两个重要指标——THW、TTC
  15. Springboot 系列(十三)使用邮件服务
  16. Android 移动开发 近场通信 蓝牙通信
  17. 阿里巴巴「防疫精灵」的敏捷开发实战
  18. esxi6.7解锁并安装macOS
  19. 合并RxJava的Observable数据流
  20. 波特率自适应的RS-485中继器设计

热门文章

  1. 企业与个人短视频变现技巧
  2. 上传图片 可限制大小和文件类型
  3. 单片机C语言流水灯花样编程,单片机C语言程序设计:花样流水灯
  4. 屏幕亮度无法调节问题解决
  5. Java中static、this、super、final用法
  6. python学习-飞机大战
  7. 基于VS2015MFC在X86debug编译平台调试opengl 代码出现oxc0000007b错误的解决方法
  8. php cgi sapi
  9. Springboot Actuator未授权访问漏洞复现
  10. 微信公众号平台如何批量给粉丝自动打标签分组