博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 lxml 中的 xpath 高效提取文本与标签属性值
阅读量:6636 次
发布时间: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/

你可能感兴趣的文章
POJ 2318 TOYS (计算几何,叉积判断)
查看>>
第四章 Spring与JDBC的整合
查看>>
开源的Android视频播放器
查看>>
Java多线程-概念与原理
查看>>
“无法在web服务器上启动调试,不是Debugger User组成员..."
查看>>
POJ1258Agri-Net
查看>>
使用Frame控件设计Silverlight的导航
查看>>
数据分析师们的不可不读的信息图与数据可视化图书
查看>>
嵌入式开发常用的一些命令
查看>>
产品设计的关键
查看>>
Virtual Treeview 安装以及入门
查看>>
多线程的那点儿事(之多线程调试)
查看>>
数据库记录锁表锁实际研究笔记 --- MSSQLSERVER
查看>>
GPIO实验(一)
查看>>
安装Exchange2010
查看>>
java Socket 获取本地主机ip
查看>>
【经验分享】URL链接地址最长是多少?
查看>>
进度条脚本
查看>>
字符集--获取中文拼音
查看>>
GridView中实现CheckBox的全选
查看>>