发布于2026-07-09 阅读(0)
扫一扫,手机访问
本文讲解当目标网页实际返回的HTML与浏览器开发者工具中看到的内容不一致时,如何调整XPath表达式以正确提取包含特定URL参数(如mediaid)的链接,并提供实用调试技巧与替代方案。
先讲一个最常见的坑:很多人习惯直接在浏览器开发者工具里看渲染后的DOM,然后照着那个结构写XPath,结果翻车了。为啥?因为服务端真正返回的原始HTML,跟浏览器展示的往往不是一回事。
具体来说,你满心期待能从页面里抓到类似 这样的链接,于是顺手写了个 //a[contains(@href,"mediaid")],结果死活匹配不到。问题出在哪?这个带 mediaid 参数的链接,压根就不存在于服务器返回的原始HTML里。
看看实际的服务端响应长什么样:
25749 Skini titl
你看,mediaid 这个参数,根本没出现在 href 里,而是被塞进了路径,比如那个数字205234。结构也完全不一样。这时候,你那个依赖 mediaid 字符串的XPath,自然就扑了个空。
实际上,正确做法是回归那些服务端可控的、稳定的结构特征。观察一下就能发现:目标链接全都藏在 这个写法不依赖任何动态变化的URL内容,稳定性高得多,能稳稳地把所有下载链接抓到手。 调试时有几个小技巧值得留意: 归根结底一句话:XPath应该优先锚定服务端可控的HTML结构——比如 class、id、父子关系这些,而不是依赖客户端Ja vaScript动态注入或重写的URL片段。结构稳定了,采集才真正可靠。 售后无忧 office旗舰店 售后无忧 office旗舰店 售后无忧 office旗舰店 售后无忧 office旗舰店class="download" 的 标签才是我们要找的。所以,正确的表达式应该是:
//div[@class="download"]/a
requests.get(url).text 或者直接跑 curl 命令,拿到的是真正的原始HTML响应,而不是浏览器渲染后的版本。 元素后,用正则 r'/titlovi/[^/]+/(\d+)/?' 或者字符串分割来解析 href 属性。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。
产品推荐
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8