爬虫【7】 xpath解析

el/2023/10/1 4:12:22

爬虫【7】 xpath解析

爬虫回顾:

  • 爬虫【1】打开网站,获取信息
  • 爬虫【2】重构UserAgent
  • 爬虫【3】URL地址编码
  • 爬虫【4】爬取百度贴吧并生成静态页面
  • 爬虫【5】爬虫猫眼电影100榜单并保存到csv
  • 爬虫【6】链家二手房信息和图片并保存到本地
  • 爬虫【7】链家二手房信息和图片并保存到本地

Xpath解析

定义

XPath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言,同样适用于HTML文档的检索
匹配演示:

<ul class="CarList"><li class="bjd" id="car_001" href="http://www.bjd.com/"><p class="name">布加迪</p><p class="model">威航</p><p class="price">2500万</p><p class="color">红色</p></li><li class="byd" id="car_002" href="http://www.byd.com/"><p class="name">比亚迪</p><p class="model">秦</p><p class="price">15万</p><p class="color">白色</p></li>
</ul>
1、查找所有的li节点//li
2、获取所有汽车的名称: 所有li节点下的子节点p的值 (class属性值为name)//li/p[@class="name"]  
3、找比亚迪车的信息: 获取ul节点下第2个li节点的汽车信息//ul/li[2]                          
4、获取所有汽车的链接: ul节点下所有li子节点的href属性的值//ul/li/@href# 只要涉及到条件,加 []
# 只要获取属性值,加 @

匹配多路径(或)

xpath表达式1 | xpath表达式2 | xpath表达式3

常用函数

1、contains() :匹配属性值中包含某些字符串节点# 查找id属性值中包含字符串 "car_" 的 li 节点//li[contains(@id,'car_')]
2、text() :获取节点的文本内容# 查找所有汽车的价格//li/p[@class='price']

lxml解析库

安装

pip3 install lxml == 3.7.2

使用流程

1、导模块from lxml import etree
2、创建解析对象parse_html = etree.HTML(html)
3、解析对象调用xpathr_list = parse_html.xpath('xpath表达式')

导 ==》 创 ==》 解

解析html样本事例

<div class="wrapper"><a href="/" id="channel">新浪社会</a><ul id="nav"><li><a href="http://domestic.sina.com/" title="国内">国内</a></li><li><a href="http://world.sina.com/" title="国际">国际</a></li><li><a href="http://mil.sina.com/" title="军事">军事</a></li><li><a href="http://photo.sina.com/" title="图片">图片</a></li><li><a href="http://society.sina.com/" title="社会">社会</a></li><li><a href="http://ent.sina.com/" title="娱乐">娱乐</a></li><li><a href="http://tech.sina.com/" title="科技">科技</a></li><li><a href="http://sports.sina.com/" title="体育">体育</a></li><li><a href="http://finance.sina.com/" title="财经">财经</a></li><li><a href="http://auto.sina.com/" title="汽车">汽车</a></li></ul>
</div>
接下来分别完成:
1. 提取所有的href的属性值
2. 提取所有href的值,不包括 / 
3. 获取 图片、军事、...,不包括新浪社会
"""
lxml
"""
from lxml import etreehtml = """
<div class="wrapper"><a href="/" id="channel">新浪社会</a><ul id="nav"><li><a href="http://domestic.sina.com/" title="国内">国内</a></li><li><a href="http://world.sina.com/" title="国际">国际</a></li><li><a href="http://mil.sina.com/" title="军事">军事</a></li><li><a href="http://photo.sina.com/" title="图片">图片</a></li><li><a href="http://society.sina.com/" title="社会">社会</a></li><li><a href="http://ent.sina.com/" title="娱乐">娱乐</a></li><li><a href="http://tech.sina.com/" title="科技">科技</a></li><li><a href="http://sports.sina.com/" title="体育">体育</a></li><li><a href="http://finance.sina.com/" title="财经">财经</a></li><li><a href="http://auto.sina.com/" title="汽车">汽车</a></li></ul>
</div>
"""parse_html = etree.HTML(html)
all_href = parse_html.xpath('//a/@href')
print(all_href)
some_href = parse_html.xpath('//a[@href!="/"]/@href')
print(some_href)
some_text = parse_html.xpath('//a[text()!="新浪社会"]/text()')
print(some_text)

http://www.ngui.cc/el/1524034.html

相关文章

爬虫【8】request.get()参数详解

爬虫【8】request.get()参数详解 爬虫回顾&#xff1a; 爬虫【1】打开网站&#xff0c;获取信息爬虫【2】重构UserAgent爬虫【3】URL地址编码爬虫【4】爬取百度贴吧并生成静态页面爬虫【5】爬虫猫眼电影100榜单并保存到csv爬虫【6】链家二手房信息和图片并保存到本地爬虫【7】…

Tensorflow2.0 YOLO篇之算法原理介绍

Tensorflow2.0 YOLO篇之算法原理介绍 YOLO篇链接 YOLO篇之算法原理介绍YOLO篇之提取xml文件信息YOLO篇之图像信息预处理YOLO篇之YOLO1论文YOLO篇之模型搭建与训练 YOLO篇是记录最近研究YOLO算法的一个过程&#xff0c;这一篇会从YOLO原理讲起&#xff0c;一直到自己搭建数据集…

Tensorflow2.0 YOLO篇之提取xml文件信息

Tensorflow2.0 YOLO篇之提取xml文件信息 YOLO篇之算法原理介绍YOLO篇之提取xml文件信息YOLO篇之图像信息预处理YOLO篇之YOLO1论文YOLO篇之模型搭建与训练 数据集介绍 数据集下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ZP9H2ym3Vp4Sda1mNiv9Pw 提取码&a…

Tensorflow2.0 YOLO篇之图像信息预处理

Tensorflow2.0 YOLO篇之提取图像信息预处理 YOLO篇之算法原理介绍YOLO篇之提取xml文件信息YOLO篇之图像信息预处理YOLO篇之YOLO1论文YOLO篇之模型搭建与训练 在上一篇博文中&#xff0c;我们已经将图片的路径和boxex信息分别存储在imgs和boxes的变量当中&#xff0c;现在我们就…

Tensorflow2.0 YOLO篇之YOLO1论文

Tensorflow2.0 YOLO篇之YOLO1论文原理 YOLO篇之算法原理介绍YOLO篇之提取xml文件信息YOLO篇之图像信息预处理YOLO篇之YOLO1论文YOLO篇之模型搭建与训练 想要彻底了解YOLO的原理&#xff0c;建议还是把当处YOLO的论文找过来看一看。YOLO1中包含了YOLO最根本的思想。很价值去读一…

Tensorflow2.0 YOLO篇之模型搭建与训练

Tensorflow2.0之 YOLO篇模型搭建与训练 YOLO篇之算法原理介绍YOLO篇之提取xml文件信息YOLO篇之图像信息预处理YOLO篇之YOLO1论文YOLO篇之模型搭建与训练 这一篇我们就要结束yolo2的代码了&#xff0c;代码和相关资料的下载链接在博客的最后面,文章只是模型搭建和训练的过程&…

爬虫【9】建立自己的IP池

爬虫【9】建立自己的IP池 爬虫回顾&#xff1a; 爬虫【1】打开网站&#xff0c;获取信息爬虫【2】重构UserAgent爬虫【3】URL地址编码爬虫【4】爬取百度贴吧并生成静态页面爬虫【5】爬虫猫眼电影100榜单并保存到csv爬虫【6】链家二手房信息和图片并保存到本地爬虫【7】链家二手…

【C语言】如何不用中间变量交换变量的值

【C语言】如何不用中间变量交换变量的值 思路分析 一般我们进行C语言中的变量交换时都是使用一个中间变量来进行求解&#xff0c;其实不适用中间变量也一样可以只需要使用下面的公司即可 m m n -n n m n - m 代码实现 #incude <stdio.h> int main {int m,n,r;pri…

【C语言】 与或非

【C语言】 与或非 逻辑运算 逻辑非的优先级最高&#xff0c;逻辑与次之&#xff0c;逻辑或最低&#xff0c;即&#xff1a;&#xff01;&#xff08;非&#xff09; → &&&#xff08;与&#xff09; → ||&#xff08;或&#xff09; 记忆口诀&#xff1a;not&…

TF2 RNN篇之序列的表示方式

TF2 RNN篇之序列的表示方式 RNN篇之序列的表示方式RNN篇之Embedding层RNN篇之SimpleRNN情感分析实战RNN篇之LSTM原理及实战RNN篇之GRU原理及实战 具有先后顺序的数据一般叫作序列(Sequence)&#xff0c;比如随时间而变化的商品价格数据就是非常典型的序列,。考虑某件商品A 在1 …