python爬虫lxml库解析xpath网页过程示例

作者:苏凉.py 时间:2021-10-06 20:01:54 

前言

在我们抓取网页内容的时候,通常是抓取一整个页面的内容,而我们仅仅只是需要该网页中的部分内容,那该如何去提取呢?本章就带你学习xpath插件的使用。去对网页的内容进行提取。

(一)xpath是什么

xpath是一门在XML文档中查找信息的语言,xpath可用来在XML 文档中对元素和属性进行遍历,主流的浏览器都支持xpath,因为html页面在DOM中表示为XHTML文档。

xpath语言是基于XML文档的树结构,并提供了浏览树的能力,通过多样的标准来选择节点。从而找到我们想要的数据。

首先我们需要在chrome浏览器中安装xpath插件。
可以到谷歌应用商店搜索下载。

python爬虫lxml库解析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

标签:python,爬虫,lxml,网页解析
0
投稿

猜你喜欢

  • 详解用Python为直方图绘制拟合曲线的两种方法

    2021-06-15 23:58:08
  • PDO::errorInfo讲解

    2023-06-06 01:51:53
  • 一道sql面试题附答案

    2024-01-18 04:50:33
  • Python语言编写电脑时间自动同步小工具

    2023-12-23 20:46:08
  • Python webargs 模块的简单使用

    2021-02-27 11:56:04
  • MySQL多表连接查询详解

    2024-01-27 13:07:57
  • 教你用Django将前端的数据存入Mysql数据库

    2024-01-19 20:09:48
  • 拓扑排序Python实现的过程

    2021-10-23 13:57:44
  • Python实现进程同步和通信的方法

    2023-08-30 04:21:45
  • 使用php shell命令合并图片的代码

    2023-06-21 22:34:35
  • MySQL的数据类型和建库策略分析详解

    2024-01-14 11:33:30
  • 使用mybatis框架连接mysql数据库的超详细步骤

    2024-01-13 06:12:08
  • asp.net iis 无法显示网页的解决方法分析

    2023-07-21 23:34:53
  • ASP,PHP与.NET伪造HTTP-REFERER方法及防止伪造REFERER方法探讨

    2024-04-29 13:57:44
  • Python编写条件分支代码方法

    2021-08-16 12:31:17
  • Python爬虫实现网页信息抓取功能示例【URL与正则模块】

    2023-12-09 05:15:03
  • 解决vue打包之后静态资源图片失效的问题

    2024-05-29 22:18:53
  • 在Django下测试与调试REST API的方法详解

    2023-05-19 16:09:32
  • Vue实现页面添加水印功能

    2024-04-28 09:24:06
  • php计算给定日期所在周的开始日期和结束日期示例

    2023-10-11 12:49:12
  • asp之家 网络编程 m.aspxhome.com