lxml 库 etree 模块。

需求:

爬取数据时用到了、记录一下

模块介绍:

通常用于解析 HTML文件。

爬虫常用方法:

(随着反爬工具越来越完善、一般很少可以直接爬取到页面了、一般都是通过Seleium 配合进行页面数据抓取、当然 也有其他更好的替代方案、只是这种方案 我相对熟悉 、毕竟测试出身嘛、哈哈)

lxml 使用:

html = etree.HTML(text) #初始化生成一个XPath解析对象
etree.tostring(html,encoding='utf-8')   #解析成字节
etree.tostringlist(html) #解析成列表

html.xpath('//li[@class="item-1"]/a/text()') # 文字 /text() 当前节点、//text() 当前节点下所有子孙节点
html.xpath('//li[@class="item-1"]/a/@href') # 链接地址 /@href 当前节点、//@href 当前节点下所有子孙节点
html.xpath('//li[contains(@class,"aaa")]/a/text()') # contains(@class,'name') 匹配全部的元素 并按列表返回
html.xpath('//li[contains(@class,"aaa") and @name="fore"]/a/text()') # 不同的属性可以用 and进行 多值处理
result=html.xpath('//li[1]/ancestor::*')  #获取所有祖先节点
result1=html.xpath('//li[1]/ancestor::div')  #获取div祖先节点
result2=html.xpath('//li[1]/attribute::*')  #获取所有属性值
result3=html.xpath('//li[1]/child::*')  #获取所有直接子节点
result4=html.xpath('//li[1]/descendant::a')  #获取所有子孙节点的a节点
result5=html.xpath('//li[1]/following::*')  #获取当前子节之后的所有节点
result6=html.xpath('//li[1]/following-sibling::*')  #获取当前节点的所有同级节点

nodename    选取此节点的所有子节点
/    从当前节点选取直接子节点
//    从当前节点选取子孙节点
.    选取当前节点
..    选取当前节点的父节点
@    选取属性
*    通配符,选择所有元素节点与元素名
@*    选取所有属性
[@attrib]    选取具有给定属性的所有元素
[@attrib='value']    选取给定属性具有给定值的所有元素
[tag]    选取所有具有指定元素的直接子节点
[tag='text']    选取所有具有指定元素并且文本内容是text节点


i.attrib # 标签属性获取、可迭代对象
i.attrib.iterkeys() # 标签属性名称、可迭代对象
i.attrib.itervalues() #标签属性值、可迭代对象
i.attrib.iteritems() # 属性的迭代传递?
"""

 

posted @ 2023-02-02 16:30  睡到自然醒ccc  阅读(97)  评论(0编辑  收藏  举报