本篇文章小编给大家带来一个非常有意思的功能,那就是使用XPath数据提取,如果感兴趣的小伙伴一定要认真看完小编的这篇文章,相信大家如果看完之后一定会对Xpath有更深一步了解 。
文章插图
首先我们来介绍XML
【什么是Xpath?带你了解Xpath:网页解析神器】XML称为可扩展标记语言,它在互联网数据传输中充当着非常重要的工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,我们可以把它理解成一个拥有着互联网最高级别的绿卡通行证数据携带者,和HTML非常类似 。
他们两个的主要区别在于HTML主要用来显示数据,XML是用来传输数据 。
XML都是标签闭合的 。例如: … 成对出现 。
冰与火之歌 乔治 马丁 2005 365.00 哈利波特与死亡圣器 J K. 罗琳 2005 48.98 python编程-从入门到放弃 挖掘机小王子 2048 99.00 python编程-从看懂到看开 尼古拉斯-赵四 2003 39.95在上面的xml语法中存在父子,先辈等关系 。
我们再来了解一下主角----XPath
XPath是一门基于在XML文档中查找信息的语言,可用来在 XML/HTML 文档中对元素和属性进行遍历,并提取相应元素 。
也是一种数据提取方式,只不过针对的是HTML/XML数据,因为爬虫主要和HTML页面打交道 。
下表是XPath常用的规则:
文章插图
lxml 是一个Python第三方模块 。主要的功能是如何解析和提取 HTML/XML 数据 。
lxml和正则类似,是一款高性能的 Python HTML/XML 解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息 。
- 安装:pip install lxml
再安装 parsel 时会自动安装 lxml,这里就不需要再次安装了 。
使用lxml模块
初始化生成一个XPath解析对象,同时可以自动补全残缺的HTML标签 。传入网页源码 。
from lxml import etreestring = """ Python编程-从看懂到看开 Python编程 2003 39.95 """# 再解析之前必须先转化一下html = etree.HTML(string)# 返回结果是列表result = html.xpath("//book[contains(@cover,'paper')]/title/text()")result = html.xpath("//book[4]/title/text()")print(result)因为 parsel 对 lxml 进行了,所以可以直接再 parsel 中无缝切换使用 xpath。
使用XPath选取指定内容 。括号里面书写XPath语法规则 。 返回列表 。
# -*- coding: utf-8 -*-import requestsimport parselheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}response = requests.get('https://maoyan.com/board/4?offset=0', headers=headers)html = response.text# %% 选择任意节点sel = parsel.Selector(html)# 提取 p 标签ps = sel.xpath('//p')for p in ps: print(p.get(
推荐阅读
- Python中的GUI是什么?一分钟看完你就知道了
- 京东一般什么时候有活动?具体活动列表
- 京东刷垫付单靠谱吗?京东补单需要注意什么?
- 京东自营店和旗舰店哪个好?有什么区别?
- 京东交易额和天猫哪个多?有什么数据可以对比?
- 京东客服电话是多少?京东客服需要哪些能力?
- 卖淘宝店铺有什么风险?怎么卖比较安全?
- 淘宝云客服报名入口是什么?淘宝云客服靠谱吗?
- 拼多多做搜索单有权重吗?需要注意什么?
- 淘宝店铺支付宝怎么更换?方法是什么?