『python爬虫』xpath变化导致无法找到指定元素(持续更新中~)


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

xpath变化的原因

XPath 可能会出现变化的原因有很多,以下是一些常见的情况:

  • 网页结构变化:如果网页的 HTML 结构发生了变化,XPath 可能会随之而变化。例如,元素的层级关系、属性名称或值的变化都可能导致 XPath 发生改变。

  • 动态生成内容:一些网页使用 JavaScript 或 AJAX 技术来动态加载内容,这样的页面在不同时间点可能会呈现不同的 HTML 结构,导致 XPath 发生变化。

  • 响应式设计:一些网站为了适配不同的设备和屏幕尺寸,会采用响应式设计,在不同的屏幕尺寸下展示不同的 HTML 结构,这也会导致 XPath 的变化。

  • 版本更新:一些网站可能会不断进行版本更新,以改进用户体验或添加新功能,这也可能会导致 XPath 的变化。

  • 数据库内容变化:如果网页内容是从数据库中动态获取的,数据库中数据的变化也可能会导致网页结构的变化,从而影响 XPath。

  • 为应对这些变化,当编写爬虫或使用 XPath 时,建议定期检查网页结构,避免硬编码的 XPath,而是使用相对稳定的定位方式,如基于 CSS 类名或 ID 进行定位,或者使用相对路径来编写 XPath,以减少受到变化的影响。

  • 此文收集我自己遇到的奇葩具体情况,不一定所有网站都适用,用于排查一些奇葩网站.

1. 语言设置

有些网站的语言设置很奇怪.切换语言居然会改动xpath
本地你浏览器访问是你设置过的cn中文,但是用谷歌打开来的时候默认是en英文,必要时在你的url中传入 诸如"langue=cn"这种参数,保证稳定,或者你一开始就在英文模式下设计.


2. 窗口大小

有些奇葩网站有自适应,窗口大小会导致适用不同的网页模板整个样子会变化.
你用driver.get(‘url’)打开网页的时候的默认窗口大小可能不同分辨率电脑不一样,第一次打开可以先用width = driver.execute_script("return document.body.clientWidth")height = driver.execute_script("return window.innerHeight")得到默认的宽度和高度.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()# 创建 ChromeOptions 对象
# 启动 Chrome 浏览器
driver = webdriver.Chrome(options=chrome_options)

# 打开登录页面
driver.get('url')
width = driver.execute_script("return document.body.clientWidth")
height = driver.execute_script("return window.innerHeight")
print("当前窗口大小为:{}x{}".format(width, height))
driver.set_window_size(800,600)#不设置固定大小,可能会导致xpath变化

n. 待添加~


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值