博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 lxml 中的 xpath 高效提取文本与标签属性值
阅读量:6635 次
发布时间:2019-06-25

本文共 1730 字,大约阅读时间需要 5 分钟。

 以下代码在 python 3.5 + jupyter notebook 中运行测试无误!

 

# 我们爬取网页的目的,无非是先定位到DOM树的节点,然后取其文本或属性值myPage = '''        TITLE                

我的博客

我的文章
PIC1 is beautiful!
PIC2 is beautiful!

更多美图

去往百度
去往网易
去往搜狐

Hello,\nworld!

-- by Adam

放在尾部的其他一些说明
''' html = etree.fromstring(myPage)# 一、定位divs1 = html.xpath('//div')divs2 = html.xpath('//div[@id]')divs3 = html.xpath('//div[@class="foot"]')divs4 = html.xpath('//div[@*]')divs5 = html.xpath('//div[1]')divs6 = html.xpath('//div[last()-1]')divs7 = html.xpath('//div[position()<3]')divs8 = html.xpath('//div|//h1')divs9 = html.xpath('//div[not(@*)]')# 二、取文本 text() 区别 html.xpath('string()')text1 = html.xpath('//div/text()')text2 = html.xpath('//div[@id]/text()')text3 = html.xpath('//div[@class="foot"]/text()')text4 = html.xpath('//div[@*]/text()')text5 = html.xpath('//div[1]/text()')text6 = html.xpath('//div[last()-1]/text()')text7 = html.xpath('//div[position()<3]/text()')text8 = html.xpath('//div/text()|//h1/text()')# 三、取属性 @value1 = html.xpath('//a/@href')value2 = html.xpath('//img/@src')value3 = html.xpath('//div[2]/span/@id')# 四、定位(进阶)# 1.文档(DOM)元素(Element)的find,findall方法divs = html.xpath('//div[position()<3]')for div in divs: ass = div.findall('a') # 这里只能找到:div->a, 找不到:div->p->a for a in ass: if a is not None: #print(dir(a)) print(a.text, a.attrib.get('href')) #文档(DOM)元素(Element)的属性:text, attrib# 2.与1等价a_href = html.xpath('//div[position()<3]/a/@href')print(a_href)# 3.注意与1、2的区别a_href = html.xpath('//div[position()<3]//a/@href')print(a_href)

 

转载地址:http://tobvo.baihongyu.com/

你可能感兴趣的文章
[LeetCode] 314. Binary Tree Vertical Order Traversal
查看>>
每周分享第 2 期
查看>>
高程3总结#第16章HTML5脚本编程
查看>>
angularjs指令的学习
查看>>
JavaScript中浅拷贝和深拷贝的区别和实现
查看>>
桶排序和基数排序
查看>>
【跃迁之路】【538天】刻意练习系列297(2018.07.28)
查看>>
nodejs读取Excel数据,下载图片
查看>>
2019届校招前端面试题整理——HTML、CSS篇
查看>>
系统优化怎么做-数据库优化
查看>>
angular2/ionic2 实现搜索结果中的搜索关键字高亮
查看>>
Git多分支平行发展(一个仓库包含多个不同的项目)
查看>>
前端架构之路(7) - 私有 npm 仓库
查看>>
用js将从后台得到的时间戳(毫秒数)转换为想要的日期格式
查看>>
apache2部署vue项目
查看>>
【云计算的1024种玩法】配置 Web应用防火墙 防患攻击与未然
查看>>
十流程序员 编程 的小小想法
查看>>
设计模式(2)代理模式
查看>>
七牛云对象存储 JavaScript SDK 更新,即刻体验更简单·可信赖的服务
查看>>
我们来聊聊Cookie、Session和Storage的那些事
查看>>