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
猜你喜欢
- 1、列表的创建与遍历与整数和字符串不同,列表要处理一组数据。因此,列表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成
- 问题定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个0~100之间的随机整数,(1)将它们存储到一维数组中
- 本文实例分析了python删除指定类型(或非指定)的文件用法。分享给大家供大家参考。具体如下:如下,删除目录下非源码文件import os
- 最近学习Python,于是就用Python写了一个抓取Discuz!用户名的脚本,代码很少但是很搓。思路很简单,就是正则匹配title然后提
- 通过?pandas.DataFrame.shift命令查看帮助文档Signature: pandas.DataFrame.shift(sel
- 无法打开用户默认数据库,登录失败,这也是SQL Server使用者熟悉的问题之一。在使用企业管理器、查询分析器、各类工具和应用软件的时候,只
- Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义。一、函数式装饰器:装饰器本身是一个函数。1.装饰函数:被装饰对象
- 下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建。于是迫不及待的想体验一下opencv的人脸识别,如下文
- 高斯模糊的介绍与原理通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。"模糊"
- 本文列出了HTML4标签的默认样式列表,对网页设计者来说这个应该很有用。原文来自:W3C (http://www.w3.org/TR/CSS
- 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python 的原生类型(Built
- 新闻、文章系统中经常会用到的一个功能,添加上一篇,下一篇或相关文章的功能可以增加访客停留的时间。也许新人在做这上一篇、下一篇功能时使用的是I
- 前言什么算是高层的文件操作呢?普通的文件操作,我们一般只涉及创建文件,文件夹以及写入文件等等。假如我现在需要复制一个文件的内容到另一个文件之
- 一. Python中表示时间的两种方式:时间戳:相对于1970.1.1 00:00:00以秒计算的偏移量,唯一的时间元组struct_tim
- 注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时,功能可能存
- 1.字符串的驻留机制字符串:在Python中字符串是基本的数据类型,是一个不可变的字符序列2.什么叫字符串的驻留机制仅保存一份相同且不可变字
- 浏览器的出现互联网的出现是人类信息交流方式的一次划时代的革命,在这场革命中有两个技术对互联网的发展起到了决定性的作用:一个技术带来的人类信息
- 导入线程包import threading准备函数线程,传参数t1 = threading.Thread(target=func,args=
- 系统环境:VC6 + Python-2.5.41、下载Python-2.5.4源码。2、解压,打开D:\Python-2.5.4\PC\VC
- 本文实例讲述了Python解决走迷宫问题算法。分享给大家供大家参考,具体如下:问题:输入n * m 的二维数组 表示一个迷宫数字0表示障碍