python网络编程实战-使用etree进行网页数据的解析,etree.xpath的使用

etree简介

etree是基于ElementTree API的一种XML解析方式。相较于SAX,DOM而言,具有代码可用性好,速度快,消耗内存少等特点。Python的lxml库中的etree,提供了ElementTree API定义的接口。

依赖库安装

要使用etree,需要安装lxml。

pip install lxml

常用方法:

etree.HTML(): 实例化tree对象, 返回etree对象
tree.xpath(): 可以定位标签
etree.tostring:节点对象到字符串的转换

常用方法举例

分析豆瓣网址相关数据,来说明etree.xpath的使用。

1.初始化

from lxml import etree
# 实例化tree对象
tree = etree.HTML(open('index.html', 'r', encoding='UTF-8').read())

2.找超链接 登录 注册

res = tree.xpath('/html/body/div/div/div/a')
# 节点对象转换成字符串输出
for e in res:
    print(etree.tostring(e,encoding='UTF-8').decode('UTF-8'))

运行结果:

你可以将之前提供的代码块添加到`Gethtml`方法中,如下所示: ```python import requests from lxml import etree class YourClassName: def __init__(self): self.url = None self.page = 1 def Gethtml(self, i): url = 'https://www.qidian.com/rank/hotsales/chn{chanid}/page{page}/' chanid = "-1" while True: # 构造新URL new_url = url.format(chanid=chanid, page=self.page) # 发送请求并获取网页内容 response = requests.get(new_url) html = response.text # 使用XPath提取data-chanid的值 tree = etree.HTML(html) data_chanid = tree.xpath('//a[@class="act"]/@data-chanid') # 如果没有获取到data-chanid的值,说明已经到达最后一页,退出循环 if not data_chanid: break # 将data-chanid的值赋给chanid变量 chanid = data_chanid[0] # 处理网页内容... # 增加翻页计数 self.page += 1 # 在循环中处理网页内容... response = self.Uresponse().content.decode() tree = etree.HTML(response) li_list = tree.xpath('//*[@id="book-img-text"]/ul/li') for li in li_list: url_list = 'https:' + str(li.xpath('./div[3]/p/a[1]/@href')[0]) self.Gettypehtml(url_list) def Uresponse(self): response = requests.get(self.url) return response ``` 在这个示例代码中,`Gethtml`方法中的循环部分已被替换为之前提供的代码块,并添加了对`Gettypehtml`方法的调用。通过在每次循环中更新`self.page`变量,我们可以实现翻页效果。 请注意,以上代码仅提供了一个示例,你可能需要根据实际情况进行适当的调整和扩展。如果有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值