网页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还有很多其他的方法。有兴趣的可以参考相关文档。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线