爬虫-lxml用法
2024-09-07 14:13:10
安装
pip install lxml
用法
# coding=utf-8
from lxml import etree text = ''' <div> <ul>
<li class="item-1"><a>first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul> </div> ''' html = etree.HTML(text)
print(html)
#查看element对象中包含的字符串
# print(etree.tostring(html).decode()) #获取class为item-1 li下的a的herf
ret1 = html.xpath("//li[@class='item-1']/a/@href")
print(ret1) #获取class含有item-1 li下的a的文本 contains包含
ret2 = html.xpath("//li[contains(@class,'item-1')]/a/text()")
print(ret2) #每个li是一条新闻,把url和文本组成字典
for href in ret1:
item = {}
item["href"] = href
item["title"] = ret2[ret1.index(href)]
print(item) print("*"*100)
#分组,根据li标签进行分组,对每一组继续写xpath
ret3 = html.xpath("//li[@class='item-1']")
print(ret3)
for i in ret3:
item= {}
item["title"] = i.xpath("a/text()")[0] if len(i.xpath("./a/text()"))>0 else None
item["href"] = i.xpath("./a/@href")[0] if len( i.xpath("./a/@href"))>0 else None
print(item)
最新文章
- Xamarin设备相关图片尺寸要求
- oracle date change
- Angularjs 服务注册
- oracle之集合操作函数---minus、union、intersect
- Spring+Mybatis多数据源配置
- 修正下载链接的树莓派Flash教程(前置:Chromium浏览器)
- SQL备份表及相关笔记
- python之supervisord启动脚本
- js模仿jquery里的几个方法next, pre, nextAll, preAll
- HDU1495(bfs)
- POJ 3040 Allowance 贪心
- DevExpress XtraReports 入门二 创建 data-aware(数据感知) 报表
- [SQL]死锁处理语句
- 【JS学习笔记】提取行间事件
- VB VBA VBS有什么区别?
- Linux centos7环境下安装Nginx
- Linux学习历程——Centos 7 find 命令
- 团队作业4——beta冲刺
- bzoj4568(合并线性基+倍增)
- C++ vector的运用