电脑帮手
柔彩主题三 · 更轻盈的阅读体验

用XPath写网络脚本,三步精准提取网页数据

发布时间:2026-03-23 04:31:15 阅读:4 次

装机时总要查硬件参数、比价、看评测?手动一页页翻太累。其实写个几行脚本,就能自动把京东、中关村在线、什么值得买上的CPU价格、显卡评测分数、SSD读写速度全抓下来——关键就在XPath。

别被名字吓住,XPath就是“网页里的定位器”

打开一个商品页按F12,右键某个价格数字选“检查”,浏览器会高亮对应HTML代码:
<span class="price">¥2999</span>
你不需要背整个DOM树,只要告诉脚本:“我要找class是price的那个span里头的文本”。XPath写法就是:

//span[@class="price"]/text()
这行代码在Python里配合requests+html库,3秒就返回“¥2999”。

实战:抓取某电商页面的5个关键字段

假设你要批量导出主板详情页的型号、芯片组、内存支持、M.2插槽数、用户评分。先用浏览器开发者工具复制几个目标元素的XPath:

  • 型号://h1[@class="product-title"]/text()
  • 芯片组://td[contains(text(),"芯片组")]/following-sibling::td/text()
  • M.2数量://span[contains(text(),"M.2")]/../text()[2]

注意第二条用了contains(),因为网页里可能写“芯片组:B650”,也可能写“芯片组:X670E”,用contains能兼容;第三条用../text()[2]是因为M.2描述后面跟着的数字在同一行的下一个文本节点。

避坑提醒:这些情况XPath会失效

动态加载的页面(比如滚动到底部才出现的评论),直接用requests拿源码是空的——得换Selenium或Playwright;有些网站用React/Vue渲染,初始HTML里压根没数据,得等JS执行完再取;还有反爬加了随机class名,比如class="a1b2c3 price",这时候就得用//span[contains(@class,"price")]/text(),别死磕固定值。

装机党不用学多深,记住三条就够用:
① //开头找任意位置,/开头从根开始;
② [@attr="xxx"]锁属性,[contains(text(),"xxx")]模糊匹配文字;
③ /text()取文字,/@href取链接,/..跳父级,/following-sibling::跳同级。

下次配机前,花10分钟写个脚本,把5家网站的RTX4070价格表自动生成Excel,喝着茶等结果就行。