当前位置: 首页 > news >正文

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

目录

    • xpath变化的原因
    • 1. 语言设置
    • 2. 窗口大小
    • n. 待添加~
    • 总结


欢迎关注 『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 Optionschrome_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爬虫』 专栏,持续更新中
『未完待续』


相关文章:

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

目录 xpath变化的原因1. 语言设置2. 窗口大小n. 待添加~总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 xpath变化的原因 XPath 可能会出现变化的原因有很多,以下是一些常见的情况: 网页…...

人大金仓数据库Kingbase服务SQL基础操作手册

1 kingbase服务 1.1 查看kingbase数据库服务进程 ps -ef|grep kingbase1.2 命令启动kingbase数据库服务 # /opt/Kingbase/ES/V8 为金仓安装目录 # /opt/Kingbase/ES/V8/data 为金仓数据目录 # sys_ctl是数据库服务器启停命令,通过-D选项来来指定数据库数据目录 #…...

赎金信00

题目链接 赎金信 题目描述 注意点 magazine中的每个字符只能在ransomNote中使用一次ransomNote和magazine由小写英文字母组成 解答思路 因为ransomNote和magazine由小写英文字母组成,所以使用大小为26的数组存储magazine中a~z对应出现的次数,ransom…...

如何运行github上的项目

为了讲明白这个过程,特意做了一个相当来说比较好读懂的原理图,希望和我一样初学的小伙伴也能很快上手哈😊 在Github中找到想要部署的项目,这里以BartoszJarocki/CV(线上简历📄)项目为例 先从头…...

机器学习-02-机器学习算法分类以及在各行各业的应用

总结 本系列是机器学习课程的第02篇,主要介绍机器学习算法分类以及在各行各业的应用 本门课程的目标 完成一个特定行业的算法应用全过程: 定义问题(Problem Definition) -> 数据收集(Data Collection) -> 数据分割(Data…...

Java项目学习

一、Java项目学习 1.1 瑞吉外卖(项目提供的资料没笔记) 视频资源:https://www.bilibili.com/video/BV13a411q753/?p1 本人git项目地址:https://gitee.com/xx-xuxin/reggie_take_out.git 瑞吉外卖Day01~Day06没讲的功能(全功能实现&#xf…...

npm run dev和npm run serve两个命令的区别

npm run dev和npm run serve两个命令的区别 前端开发过程中运行Vue项目的时候,有时候使用npm run serve命令可以启动项目,有时候却会报错;有时候使用npm run dev命令可以启动项目,有时候却也会报错。是什么原因造成这种情况呢&am…...

ui设计:利用即使设计设计出漂亮样式

目录 一、基本操作 二、具体介绍 6-1 填充图片 6-2 填充色 6-3 图标 右边栏基础设置 右边栏导出​编辑 一、基本操作 二、具体介绍 6-1 填充图片 选择其一图片填充 6-2 填充色 6-3 图标 右边栏基础设置 右边栏导出...

[unity]lua热更新——个人复习笔记【侵删/有不足之处欢迎斧正】

一、AssetBundle AB包是特定于平台的资产压缩包,类似于压缩文件 相对于RESOURCES下的资源,AB包更加灵活轻量化,用于减小包体大小和热更新 可以在unity2019环境中直接下载Asset Bundle Browser 可以在其中设置关联 AB包生成的文件 AB包文件…...

Springboot日常总结-@RestController和@Controller的区别

RestController和 Controlle是两种不同的控制器实现,它们的主要区别在于如何处理返回的数据和是否支持跳转到视图页面。 Controller 是一个基本的控制器注解,它允许你将一个类标记为一个Spring MVC控制器处理器。使用 Controller 的类中的方法可以直接返…...

MongoDB之客户端工具与核心概念及基本类型篇

MongoDB之客户端工具与核心概念及基本类型篇 文章目录 MongoDB之客户端工具与核心概念及基本类型篇1. MongoDB是什么?1. 关于MongoDB2. 相关客户端工具1. MongoDB Compass2. Studio 3T3. Navicat for MongoDB4. NoSQL Manager for MongoDB Professional 2.MongoDB相关概念2.1 …...

Essential C++ 编程基础

Essential C 前言1.1 如何撰写 C程序1.2 对象的定义与初始化1.3 撰写表达式1.4 条件语句和循环语句1.5 如何运用Array和Vector1.6 指针带来弹性1.7 文件的读写 前言 通过Essential C笔记的形式对C相关重点知识进行汇总,读者通读此系列文章就可以轻松的把该语言基础捡…...

07 Qt自绘组件:图片预览小组件ImageViewer

系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起:自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起:自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件:令人抓狂的QToolButton文本图标居中问题-CSDN博客 0…...

Groovy(第九节) Groovy 之单元测试

JUnit 利用 Java 对 Song 类进行单元测试 默认情况下 Groovy 编译的类属性是私有的,所以不能直接在 Java 中访问它们,必须像下面这样使用 setter: 编写这个测试用例余下的代码就是小菜一碟了。测试用例很好地演示了这样一点:用 Groovy 所做的一切都可以轻易地在 Java 程序…...

gprMax3.0随机介质建模

此处利用gprMax建立随机介质模型,采用matlab生成随机数组,保存为HDF5文件,此处为全代码,无需修改即可运行。在gprMax输入文件中使用#geometry_objects_read:读入自定义的随机模型 此文参考其他博主的自定义几何形状模块gprMax3.0建模时如何自定义目标的几何形状_#geomet…...

自动驾驶---行业发展及就业环境杂谈

进入21世纪以来,自动驾驶行业有着飞速的发展,自动驾驶技术(L2---L3)也逐渐落地量产到寻常百姓家。虽然最早期量产FSD的特斯拉有着深厚的技术积累,但是进入2010年以后,国内的公司也逐渐发展起来自己的自动驾…...

Matlab 矩阵基础

Matlab 基础 MATLAB 是“矩阵实验室matrix laboratory”的缩写。其他编程语言大多一次处理一个数字,MATLAB 主要用于处理整个矩阵和数组。 所有 MATLAB 变量都是多维数组,无论数据类型如何。矩阵是常用于线性代数的二维数组。 若要创建一个包含单行中…...

TikTok矩阵系统的功能展示:深入解析与源代码分享!

今天我来和大家说说TikTok矩阵系统,在当今数字化时代,社交媒体平台已成为人们获取信息、交流思想和娱乐放松的重要渠道,其中,TikTok作为一款全球知名的短视频社交平台,凭借其独特的创意内容和强大的算法推荐系统&#…...

Gradio Dataframe sort 问题

Gradio Dataframe sort 问题 1. 问题描述2. 解决办法(临时) 1. 问题描述 使用 Gradio Dataframe 显示表格数据时,默认每个列名右边会有个 sort icon,点击这个 sort icon 后,会按照该列进行升序或者降序排序。 问题点是,如果对表…...

【机器学习300问】24、模型评估的常见方法有哪些?

一、为什么要对模型进行评估? 对机器学习和神经网络的模型进行评估是至关重要的,原因如下: 得知模型的泛化能力: 模型评估的主要目的是了解模型在未见过的数据上的表现,即其泛化能力。这是因为模型的性能在训练数据上…...

地理位置服务坐标转换与路径规划

## 地理位置服务:坐标转换与路径规划的智慧引擎 在数字化时代,地理位置服务(LBS)已成为日常生活不可或缺的一部分。无论是导航软件中的实时路径规划,还是地图应用中不同坐标系的精准转换,这些功能背后都依…...

Windows Cleaner终极指南:如何快速释放C盘空间并提升系统性能

Windows Cleaner终极指南:如何快速释放C盘空间并提升系统性能 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经遇到过这样的困扰&#xff1a…...

告别复杂推导:用数学归纳法5步搞定Pinsker不等式的证明(思路拆解)

数学归纳法五步拆解Pinsker不等式:从基础引理到降维技巧的完整指南 第一次看到Pinsker不等式时,那个关于概率分布之间KL散度与平方距离的不等式关系让我既着迷又困惑。教科书上常见的证明往往依赖复杂的变分法或积分技巧,直到发现这个基于数学…...

别再硬扛期刊论文了!Paperxie 这四步,帮你把 “难产稿” 变成投稿通关文

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 你有没有过这种时刻?对着空白文档发呆三小时,期刊论文的标题都定不下来&#xf…...

Whisper.cpp实战指南:在本地设备上构建高效离线语音识别系统

Whisper.cpp实战指南:在本地设备上构建高效离线语音识别系统 【免费下载链接】whisper.cpp Port of OpenAIs Whisper model in C/C 项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp 你是否曾想过在完全离线的环境下实现高质量的语音识别&…...

如何用Speechless免费工具完整备份你的微博记忆:终极指南

如何用Speechless免费工具完整备份你的微博记忆:终极指南 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 你是否曾经翻看多年前的微博&am…...

Loom协程+Spring WebFlux=安全灾难?揭秘2024年生产环境爆发的4类隐蔽竞态漏洞及修复清单

第一章:Loom协程与Spring WebFlux融合演进的必然性与风险图谱随着高并发、低延迟服务需求持续攀升,传统异步非阻塞模型面临抽象层级过深、调试成本高昂、线程上下文管理复杂等结构性瓶颈。Spring WebFlux 基于 Reactor 的响应式编程范式虽显著提升了资源…...

【DeepSeek】引导加载程序与系统组件的安全级别分析

引导加载程序与系统组件的安全级别分析 1. 概述 本文档详细分析了ARM架构下,从系统加电到应用程序运行的各个阶段所运行的异常级别(Exception Levels, EL)。包括Trusted Firmware-A (TF-A) 的各个引导阶段、U-Boot、操作系统内核以及应用程序…...

深入Nanite限制清单:除了模型变黑,这些UE5高级功能你也用不了

深入Nanite限制清单:除了模型变黑,这些UE5高级功能你也用不了 当你在UE5项目中启用Nanite时,第一个直观的视觉反馈可能就是模型突然"变黑"。这个现象就像是一个警示灯,提醒你正在触碰Nanite技术的边界。但模型变黑仅仅是…...

Kotaemon保姆级教程:从零开始搭建私有化RAG系统

Kotaemon保姆级教程:从零开始搭建私有化RAG系统 1. 为什么选择Kotaemon搭建RAG系统? 在当今信息爆炸的时代,企业面临着海量文档管理的挑战。无论是内部知识库、产品手册还是客户资料,如何快速准确地从中提取有价值的信息成为关键…...