【前情回顾】如何灵活的解析网页,提取我们想要的数据,是我们写爬虫时非常关心和需要解决的问题。
从Python的众多的可利用工具中,我们选择了lxml的,它的好我们知道,它的妙待我们探讨。前面我们已经从HTML字符串转换成的HtmlElement对象,接下来我们就探讨该如何操作这个的HtmlElement对象。
lxml.html的HtmlElement对象的各种属性和方法
这个的HtmlElement对象有各种方法,我们重点讨论跟解析网页相关的函数,而修改这个对象的方法若与提取内容相关也一并介绍,介绍过程结合下面这段HTML代码以便更好说明问题:
<前>
& lt; div 类=皃ost", id=?23“比;
,,,& lt; p 类=皃ara"祝辞abc
联系
>之前
.attrib属性和. get()方法
前者是html标签的属性集合,以字典表示,后者是取得某个属性的值,相当于字典的. get()方法。看示例:
<前>
[35]:拷贝,doc =, lxml.html.fromstring (& # 39; & lt; div 类=皃ost", id=?23“祝辞& lt; p 类=皃ara"祝辞abc
链接> ”)
在[37]:doc.attrib
[37]:{“类”:“文章”,“id”:“123”}
在[38]:doc.get(类)
出[38]:“文章”
>之前
.drop_tag()方法
移除该html标签,但保留它的子节点和文本并合并到该标签的父节点。
<前>
[46]:拷贝,doc =, lxml.html.fromstring (& # 39; & lt; div 类=皃ost", id=?23“祝辞& lt; p 类=皃ara"祝辞abc链接> ”)
在[47]:doc.find (//p) .drop_tag ()
在[48]:lxml.html.tostring (doc)
出[48]:b
链接”
>之前
.drop_tree()方法
移除该节及其子节点和文本,而它后面的文本(尾文)合并到前面一个节点或父节点。
<前>
[50]:拷贝,doc =, lxml.html.fromstring (& # 39; & lt; div 类=皃ost", id=?23“祝辞& lt; p 类=皃ara"祝辞abc
链接> ”)
在[51]:doc.find (//p) .drop_tree ()
在[52]:lxml.html.tostring (doc)
出[52]:b
通过路径(Xpath的)或标签查找特定节点,前者返回找到的第一个,第二个返回找到的全部HTML元素,第三个返回找到的第一个的节点的文本(的。text)
<前>
[55]:拷贝,doc =, lxml.html.fromstring (& # 39; & lt; div 类=皃ost", id=?23“祝辞& lt; p 类=皃ara"祝辞abc