You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XPath中遍历列表并插入索引变量批量获取对应href属性

原有写法的逻辑偏差在于,你把format()方法作用在了response.xpath()返回的Selector对象上,而非XPath查询字符串本身,所以无法完成变量插值,自然得不到预期结果。同时需要注意:XPath中的节点位置索引默认从1开始计数,和Python的0起始索引规则不同。

方案1:动态插入索引变量实现遍历

先完成字符串插值再传入XPath查询方法即可,两种常用写法如下:

  • format写法兼容所有Python3版本:
for i in range(1, 16):
    xpath_expr = './/li[{}]/a[@class="pagination__item"]/@href'.format(i)
    # 单条匹配用get(),多条匹配用getall()
    test_page = response.xpath(xpath_expr).get()
  • Python3.6+支持的f-string写法更简洁:
for i in range(1, 16):
    test_page = response.xpath(f'.//li[{i}]/a[@class="pagination__item"]/@href').get()

方案2:XPath内置规则批量筛选指定区间节点

不需要写Python循环,直接用XPath的position()函数即可一次性提取位置在1-30之间的所有href属性,执行效率更高:

# 直接提取前30个符合条件的li对应的href,返回结果为列表
href_list = response.xpath('.//li[position() >= 1 and position() <= 30]/a[@class="pagination__item"]/@href').getall()

内容的提问来源于stack exchange,提问作者me.limes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:54:01