网页qq抓取什么原理(怎么实例化一个etree对象呢?怎么快速的写好一个xpath)
优采云 发布时间: 2022-02-19 09:18网页qq抓取什么原理(怎么实例化一个etree对象呢?怎么快速的写好一个xpath)
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'))
>> []
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)
>> []
本地是etree.parse,网页是etree.HTML
这里返回的不是本地或网页html文档中的内容,而是一个Element类型的对象。该对象存储标题对应的文本内容。如果有多个内容,则以列表的形式返回多个Element。
xpath 表达式的规则:
/:表示层次,从根节点开始。
//: 表示多个级别,可以从任何节点定位。
属性定位://div[@class="title"] 以@ 为属性添加前缀。
索引定位: //div[@class="title"]/a[1] 下标从 1 开始,而不是 0。
/text():获取标签中的直接文本内容。
//text(): 可以获取一个标签的所有文本内容。
@attrName:在属性前加@,获取属性的内容。
接下来,我将告诉你如何快速编写一个xpath路径。
我们可以在我们要爬取数据的网页上打开开发者工具(点击右键查看或者直接同时按fn和f12打开开发者工具),然后在里面找到我们要爬取的数据元素(Element)并右键选择复制,然后选择复制XPath,就这样,是不是很方便。
以上是xpath比较常用的方法。当然,xpath还有很多其他的方法。有兴趣的可以参考相关文档。