爬虫玩家必备技能:xpath语法入门教程

xpath,一种用于描述元素位置和属性的语法,能够让你轻松处理网页数据,成为爬虫玩家的必备技能。

准备工作:安装和导入所需库

要使用xpath,我们需要两个必要的库——lxml和requests。


pip install lxml

pip install requests

第一步:获取和解析网页


import lxml.etree

import requests



url = "https://www.example.com"  # 你感兴趣的网页URL

response = requests.get(url)  # 发送GET请求

html = response.text  # 获取网页的源代码

html_obj = lxml.etree.HTML(html)  # 解析网页为HTML对象

第二步:xpath表达式快速了解

xpath表达式是一种用于描述元素位置和属性的语法,它由一系列的步骤组成,每个步骤都以/或//开头。/表示从根节点开始查找,//表示从任意节点开始查找。每个步骤都可以包含节点名称、谓词和轴等条件,用于过滤和选择元素。以下是一些常见的xpath表达式,以及它们的含义和效果:

 

# 查找所有的div元素:

"//div" 


# 查找id属性为content的div元素,其中 @ 表示属性,[] 表示谓词没用于过滤条件:

"//div[@id='content']" 


# 查找class属性包含item的div元素,contains是一个函数,用于判断属性值是否包含某个字符串:

"//div[contains(@class, 'item')]"


# 查找第一个div元素下的所有p元素,[1]表示位置,/表示子节点。,:

"//div[1]/p"


# 查找所有含有a子元素的li元素,a表示节点名称,不加@或者/:

"//li[a]"


# 查找所有a元素的href属性值:

"//a/@href"

# 这个表达式会返回网页中所有a元素的href属性值,@href表示属性名称。


# 查找所有文本为"Hello"的span元素,text()是一个函数,用于获取文本字符串:

"//span[text()='Hello']"

第三步:提取数据

lxml库提供的xpath方法来执行xpath表达式,返回值为列表。例:


links = html_obj.xpath("//a")  # 返回所有a元素

for link in links:  

    text = link.text 

    href = link.get("href")  

    print(text, href) 

 

第四步:修改数据

修改网页中的元素和数据。


h1 = html_obj.xpath("//h1")[0]  # 返回第一个h1元素

h1.text = "New Title" 

 

第五步:保存结果

lxml库提供的tostring方法来将修改后的HTML对象转换为字符串


new_html = lxml.etree.tostring(html_obj, encoding="utf-8") 

with open("new.html", "wb") as f:  

    f.write(new_html)  

以上就是小编关于使用xpath来处理网页数据的快速入门分享。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值