“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来处理网页数据的快速入门分享。
总结
以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注我:公众号博客CSDNB站:测试玩家勇哥
;我会不定期地分享更多的精彩内容。感谢你的阅读和支持!
长按上方二维码2秒,关注我
勇哥,10年落魄测试老司机,技术栈偏python,工作之余为粉丝进行简历修改、面试辅导、模拟面试、资料分享、一对一自动化测试教学辅导等副业发展。目前已服务十多位小伙伴,取得高薪offer。
,测试干货及时送达
接口自动化测试项目2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等 |
揭秘抓包利器:Python和Mitmproxy让您轻松实现接口请求抓取与分析! |
构建高效的接口自动化测试框架思路 |
Pytest 快速入门 |
接口自动化之测试数据动态生成并替换 |
requests模块该如何封装? |
接口自动化如何封装mysql操作 |
一文看懂python如何执行cmd命令 |
最通俗易懂python操作数据库 |
python-Threading多线程之线程锁 |
python正则一篇搞掂 |
性能测试之必备知识 |
性能分析思路 |
Python + ChatGPT来实现一个智能对话的钉钉机器人 |
一文看懂python如何执行cmd命令 |
发表评论