当前位置: 代码迷 >> 综合 >> python爬虫之数据解析(XPath)
  详细解决方案

python爬虫之数据解析(XPath)

热度:52   发布时间:2023-11-26 18:18:28.0

xpath是python爬虫最常用的数据解析方法了,我觉得也是最简单的,通用性也很强,后面会说为什么是最简单的。主要步骤有两步。

1、实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中。

2、调用etree对象中的xpath方法,结合xpath表达式定位标签和爬取内容文本或属性。

怎么实例化一个etree对象呢?首先下载lxml库然后导入etree包,然后就是将本地的HTML文档源码数据加载到etree对象中,或者是将实时的网页页面源码数据加载到etree中。

from lxml import etree
#将本地html文档中的数据加载到该对象中
tree = etree.parse('./douban.html')
print(tree.xpath('/html/head/title'))>>  [<Element li at 0x1458ddbbc80>]
from lxml import etree
import requests# 将网页源码数据加载到该对象中
page_text = requests.get(url=url,headers=headers).text
tree = etree.HTML(page_text)
li_list = tree.xpath('//div[@class="slist"]/ul/li')
print(li_list)>>  [<Element li at 0x1458ddbbc80>]

                               本地的是etree.parse,网页的是etree.HTML 

这里返回不是本地或网页html文档当中的内容,而是一个Element类型的对象,这个对象存储的就是title对应的文本内容,如果有多个内容,就以列表的形式,返回多个Element。

xpath表达式的规则:

/:表示是一个层级,从根节点开始定位。

//:表示的是多个层级,可以从任意节点开始定位。

属性定位://div[@class="title"] 在属性前加上@。

索引定位://div[@class="title"]/a[1] 下标是从1开始不是0开始。

/text():获取的是标签中直系的文本内容。

//text():可以获取某一标签的所有文本内容。

@attrName:在属性前面加上@,可以获取属性内容。

 接下来告诉大家,怎么快速的写好一个xpath路径。

我们可以在想要爬取数据的网页打开开发者工具(按右键点击检查或者直接同时按fn和f12就打开了开发者工具),然后在元素(Element)中找到想要爬取的数据点击右键选择复制,再选择复制XPath,就可以了,是不是很方便。

 

以上是xpath比较常用的方法了,当然xpath还有很多其他方法,大家感兴趣可以去查阅相关的文档。