安装

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)

最新文章

  1. Xamarin设备相关图片尺寸要求
  2. oracle date change
  3. Angularjs 服务注册
  4. oracle之集合操作函数---minus、union、intersect
  5. Spring+Mybatis多数据源配置
  6. 修正下载链接的树莓派Flash教程(前置:Chromium浏览器)
  7. SQL备份表及相关笔记
  8. python之supervisord启动脚本
  9. js模仿jquery里的几个方法next, pre, nextAll, preAll
  10. HDU1495(bfs)
  11. POJ 3040 Allowance 贪心
  12. DevExpress XtraReports 入门二 创建 data-aware(数据感知) 报表
  13. [SQL]死锁处理语句
  14. 【JS学习笔记】提取行间事件
  15. VB VBA VBS有什么区别?
  16. Linux centos7环境下安装Nginx
  17. Linux学习历程——Centos 7 find 命令
  18. 团队作业4——beta冲刺
  19. bzoj4568(合并线性基+倍增)
  20. C++ vector的运用

热门文章

  1. Idea用maven给springboot打jar包
  2. C语言I作业12—学期总结
  3. thinkphp5.1 - twig使用
  4. 明解C语言 入门篇 第五章答案
  5. eclipse卡在revert resources的解决方法
  6. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作
  7. 程序游戏推荐(C语言贪吃蛇,python天天酷跑(需要安装pygame),js是狠人就坚持30s)
  8. v-on 事件触发
  9. JavaScript面向对象①
  10. QT场景视图父子关系图元打印研究