python爬虫lxml库解析xpath网页过程示例
作者:苏凉.py 时间:2021-10-06 20:01:54
前言
在我们抓取网页内容的时候,通常是抓取一整个页面的内容,而我们仅仅只是需要该网页中的部分内容,那该如何去提取呢?本章就带你学习xpath插件的使用。去对网页的内容进行提取。
(一)xpath是什么
xpath是一门在XML文档中查找信息的语言,xpath可用来在XML 文档中对元素和属性进行遍历,主流的浏览器都支持xpath,因为html页面在DOM中表示为XHTML文档。
xpath语言是基于XML文档的树结构,并提供了浏览树的能力,通过多样的标准来选择节点。从而找到我们想要的数据。
首先我们需要在chrome浏览器中安装xpath插件。
可以到谷歌应用商店搜索下载。
安装好之后重启浏览器按下快捷键Ctrl +Shift+X网页上会出现黑色的框就表示成功啦!
(二)xpath的基本语法 路径查询。
// : 查找所有子孙节点,不考虑层级关系
/ : 找直接子节点
谓词查询
//div[@id]
//div[@id=“maincontent”]
属性查询
//@class
模糊查询
//div[contains(@id, “he”)]
//div[starts -with(@id, “he”)]
内容查询
//div/h1/text()
(三) lxml库
lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
在使用前我们需要在pycharm里安装lxml库。
在终端输入指令即可:
pip install lxml -i https://pypi.douban.com/simple
注意:必须安装在我们当前所使用的环境下
(四)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)
来源:https://blog.csdn.net/weixin_46277553/article/details/123236523
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
python用pandas读写和追加csv文件
![](https://img.aspxhome.com/file/2023/3/115173_0s.png)
Python常用图像形态学操作详解
![](https://img.aspxhome.com/file/2023/7/103747_0s.png)
Python获取时间范围内日期列表和周列表的函数
![](https://img.aspxhome.com/file/2023/8/75928_0s.png)
Python中变量交换的例子
javascript 45种缓动效果(二)
![](https://img.aspxhome.com/file/UploadPic/up/2009091919271644.gif)
pytest配置文件pytest.ini的详细使用
![](https://img.aspxhome.com/file/2023/3/133743_0s.png)
python人工智能tensorflow常用激活函数Activation Functions
![](https://img.aspxhome.com/file/2023/6/67236_0s.png)
Python 爬虫学习笔记之多线程爬虫
![](https://img.aspxhome.com/file/2023/8/95128_0s.png)
Python脚本实时处理log文件的方法
Python requests HTTP验证登录实现流程
![](https://img.aspxhome.com/file/2023/7/75337_0s.png)
Python实现SMTP发送邮件详细教程
![](https://img.aspxhome.com/file/2023/8/109578_0s.jpg)
用Python实现一个模仿UP主弹幕控制的直播间功能
![](https://img.aspxhome.com/file/2023/9/65859_0s.jpg)
python 实现检验33品种数据是否是正态分布
python 判断一个进程是否存在
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
![](https://img.aspxhome.com/file/2023/7/92457_0s.png)
使用pdb模块调试Python程序实例
python实现彩票系统
PHP 简单日历实现代码
![](https://img.aspxhome.com/file/2023/1/55341_0s.jpg)