有问题请在博客下留言或加作者微信:tinghai87605025 或 QQ :87605025

python QQ交流群:py_data 483766429

一、xpath 浅谈

1.1 xpath 是什么?

给某些规律信息找通用表达式,我们首先想到的是正则,然而,对于大部分的我们正则用的是不好的,如果用来处理HTML文档是很累,那么有没有其他的方法?答案是肯定的,有!那就是XPath,我们可以先将网络获取的String类型数据转换成 HTML/XML文档,然后用 XPath 查找 HTML/XML 节点或元素。

即XPath (XML Path Language) 是一门在 XML 文档(如下图)中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历

1.2 lxml 库

lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。

lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath语法,来快速的定位特定元素以及节点信息。

二、 xpath 路径表达式

2.1 最常用的路径表达式

2.2  常用路径表达式以及表达式的结果

2.3 选取未知节点

2.4 选取若干路径,通过在路径表达式中使用“|”运算符,您可以选取若干个路径

2.5 xpath的运算符

三、xpath 入门测试

3.1 lxml 读取数据

测试页面

  1. 醉卧沙场君莫笑,古来征战几人回
  2. 两岸猿声啼不住,轻舟已过万重山
  3. 一骑红尘妃子笑,无人知是荔枝来
  4. 停车坐爱枫林晚,霜叶红于二月花
  5. 商女不知亡国恨,隔江犹唱后庭花

李白

  1. 君不见黄河之水天上来,奔流到海不复回
  2. 李白乘舟将欲行,忽闻岸上踏歌声
  3. 桃花潭水深千尺,不及汪伦送我情

雷军

3

5

6

8

9

3

  1. are you ok
  2. 会飞的猪

3.2 xpath 入门实验

lxml 、element 、etree

1 importrequests2

3 #lxml

4 #element 标签

5 #etree 标签树

6 from lxml importetree7

8 url = 'https://www.qiushibaike.com/text/'

9

10 x = '''/html/body/div[@id='content']/div[@class='content-block clearfix']/div[@id='content-left']/div[@id='qiushi_tag_120441381']/div[@class='author clearfix']/a[1]/img/@src'''

11

12

13 x = '''/html/body/div[@id='content']/div[@class='content-block clearfix']/div[@id='content-left']/div[@id='qiushi_tag_112124634']/div[@class='author clearfix']/a[1]/img/@src'''

14

15 x = '//img/@src'

16

17 x = '''/html/body/div[@id='content']/div[@class='content-block clearfix']/div[@id='content-left']18 /div[@id='qiushi_tag_112124634']/a[@class='contentHerf']/div[@class='content']/span'''

19

20 x = '//div[@class="content"]/span/text()'

21 response = requests.get(url=url,verify =False)22 response.encoding = 'utf-8'

23

24 #String 串

25 html =response.text26

27 #使用etree,转换成标签树

28 #json.loads() 类似

29

30

31 html_tree =etree.HTML(html)32

33 #print(html_tree)

34 #print(etree.tostring(html_tree).decode('utf-8'))

35

36

37 #对etree对象使用xpath方法,根据xpath语句进行数据的查找

38 src =html_tree.xpath(x)39

40 print(src)

获取所有的

标签

1 from lxml importetree2

3 html = etree.parse('hello.html')4 li_list = html.xpath('//li')5

6 print(li_list) #打印

标签的元素集合

7 print(len(li_list))

继续获取

标签的所有 class属性

1 from lxml importetree2

3 html = etree.parse('hello.html')4 result = html.xpath('//li/@class')5 print(result)

继续获取

标签下hre 为 link1.html 的 标签

1 from lxml importetree2 html = etree.parse('./hello.html')3 result = html.xpath('//li/a[@href="link1.html"]')4 print(result)

获取

标签下的所有 标签

1 from lxml importetree2 data = '''

3

4 5 你好,老段6 7 8 9 10 11

'''

12 html =etree.HTML(data)13 result = html.xpath('//li//span')14 print(result[0].text)

获取

标签下的

python xpath入门_xpath 的使用相关推荐

  1. python xpath入门_python爬虫入门实战(三)!xpath 和 csv!

    最近有小伙伴说正则表达式学不懂?那有什么替代方案呢?一起往下看吧! 在前两篇文章我们已经学了一些基本技巧.但是之前都是用正则表达式来解析内容的,可能有小伙伴对正则表达式不理解,于是乎,我找到一个相对好 ...

  2. Python xpath 入门使用

    一.简介 xpath 浏览器插件,安装之后可以直接在浏览器输入 xpath 进行测试 # 开关快捷键 windows: Ctrl-Shift-X Mac: Command-Shift-X 简单流程 # ...

  3. python中xpath定位_xpath最新:关于python中的xpath解析定位_爱安网 LoveAn.com

    关于"xpath"的最新内容 聚合阅读 这篇文章主要介绍了关于python中的xpath解析定位,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧... 这篇文章主要 ...

  4. python爬虫入门代码-Python爬虫入门

    原标题:python爬虫入门 基础知识 HTTP协议 我们浏览网页的浏览器和手机应用客户端与服务器通信几乎都是基于HTTP协议,而爬虫可以看作是一个另类的客户端,它把自己伪装成浏览器或者手机应用客户端 ...

  5. python语言入门与精通-终于懂得python从入门到精通教程

    对只用一种语言来构建某个项目的情况而言,Javascript和它的框架是非常有用的.Angular.js可以控制展示给用户的网站前端.Node.js将作为管理网站所有内容的网络服务器.Express. ...

  6. Python爬虫入门(1):综述

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  7. 转 Python爬虫入门一之综述

    转自: http://cuiqingcai.com/927.html 静觅 » Python爬虫入门一之综述 首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为 ...

  8. python从入门到精通-终于懂得python从入门到精通教程

    对只用一种语言来构建某个项目的情况而言,Javascript和它的框架是非常有用的.Angular.js可以控制展示给用户的网站前端.Node.js将作为管理网站所有内容的网络服务器.Express. ...

  9. python编程入门经典-Python编程入门经典PDF文档免费下载

    作为一门面向对象的开源编程语言,python易于理解和扩展,并且使用起来非常方便.<python编程入门经典>涵盖了python的方方面面,通过学习本书,读者可以立即使用python编写程 ...

最新文章

  1. 计算机网络实验三张芳,【喜讯】实验室于俊清老师获得2009年华中科技大学青年教师教学竞赛一等奖...
  2. Struts2--标签tag
  3. C++设计模式之工厂模式(1)
  4. mysql 回滚段_MySQL和PostgreSQL比较
  5. Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12
  6. JDK8新特性(十二)之并行的Stream流
  7. 网站服务器部署及优化---2---部署wordpress网站(rhel6.5)
  8. /etc/group
  9. 移动机器人路径规划算法综述(二)
  10. 计算机软件师倾斜怎么能摆正,ps中怎么把倾斜图案拉直
  11. html表格(table)的基本结构
  12. Python——批量发送邮件(持续更新)
  13. C语言中返回的0和1
  14. 微信如何定时发朋友圈?一招教你解决
  15. hive之full outer join(全连接)使用方法
  16. 蚂蚁队-冲刺日志(第1天)
  17. 刘强东给京东高管降薪:2千多位总监兄弟工资打8折,并拿出100亿保障”兄弟“基础住房
  18. 关于自己的转正述职报告
  19. Elance:寻找并雇佣微软认证的MCP开发者
  20. a=a+b和a+=b

热门文章

  1. NTC温度传感器MF53 503-3950F-1500L(铜鼻头) 安科瑞NTC测温曲线
  2. 初试一结束,考研人怎么变成这个鬼样子?!
  3. ubuntu笔记本设置NVIDIA显卡只识别到外接显示器,设置核显只识别到笔记本屏幕解决办法
  4. Elasticsearch Java API 的使用(13)—分组聚合之一
  5. 如何在python中调用MATLAB代码(利用anaconda完美解决多python环境问题)
  6. 安卓手机如何让应用程序静音
  7. 蓝桥杯——ALGO-743——矮人采金子
  8. a byte of python电子书_免费好书:A Byte of Python
  9. PowerISO v5.6
  10. Node.js学习(五):认识模板