文章目录
前言
在我们抓取网页内容的时候,通常是抓取一整个页面的内容,而我们仅仅只是需要该网页中的部分内容,那该如何去提取呢?本章就带你学习xpath插件的使用。去对网页的内容进行提取。
(一)xpath是什么
xpath是一门在XML文档中查找信息的语言,xpath可用来在XML 文档中对元素和属性进行遍历,主流的浏览器都支持xpath,因为html页面在DOM中表示为XHTML文档。
xpath语言是基于XML文档的树结构,并提供了浏览树的能力,通过多样的标准来选择节点。从而找到我们想要的数据。
首先我们需要在chrome浏览器中安装xpath插件。
可以到谷歌应用商店搜索下载。
(二)xpath的基本语法
- 路径查询。
- 谓词查询
- 属性查询
- 模糊查询
- 内容查询
(三) lxml库
lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
在使用前我们需要在pycharm里安装lxml库。
在终端输入指令即可:
(四)lxml库的使用
- 导入lxml.etree
from lxml import etree
- 解析本地文件
tree = etree.parse(xxx.html) #解析本地文件
- 解析服务器响应文件
tree = etree.HTML(content) #解析网页文件
- 返回结果
result = tree.xpath('//div/div/@aria-label')[0]
注:xpath返回的结果类型为列表,当结果有许多值时我们可以使用下标来取我们想要的值。
(五)实例演示
import urllib.request from lxml import etree import urllib.parse url ='https://www.baidu.com/s?' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' } cre_data = { 'wd' : '这里写关键词' } data = urllib.parse.urlencode(cre_data) url = url + data request = urllib.request.Request(url = url , headers = headers ) response = urllib.request.urlopen(request) content = response.read().decode('utf-8') print(content) # tree = etree.parse(xxx.html) #解析本地文件 tree = etree.HTML(content) #解析网页文件 result = tree.xpath('//div/div/@aria-label')[0] print(result)