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

使用Scrapy抓取印度中央银行网站时XPath查询返回None如何解决

问题解决方案

首先明确:span标签没有唯一id不是XPath返回None的原因,问题根源是你使用的XPath来自浏览器开发者工具的自动生成结果,浏览器会为原始HTML自动补全tbody标签,但Scrapy请求拿到的页面源代码中不存在tbody节点,导致路径匹配失败。

修正步骤

  • 删除XPath路径中的tbody节点即可修复匹配问题
  • 建议优化XPath写法,避免使用多层级索引,适配性更强,不需要提前预判每页的行数

修正后代码示例

start_urls = [
    "https://www.centralbankofindia.co.in/en/branch-locator?field_state_target_id=All&combine=&page={}".format(
        i
    )
    for i in range(0, 5)
]
brand_name = "Central Bank of India"
spider_type = "chain"

def parse(self, response, **kwargs):
    """Parse response."""
    # 直接定位所有表格行,遍历取值
    branch_rows = response.xpath('//*[@id="block-cbi-content"]/div/div/div/div[3]/div/table/tr')
    for row in branch_rows:
        address = row.xpath('./td[2]/div/span[2]/text()').extract_first()
        if address:
            address = address.strip()
        print(address)

def get_text(self, response, path):
    sol = response.xpath(path).extract_first()
    return sol

你可以自行打印response.text搜索tbody关键词,验证原始响应中确实不存在该节点,确认修正逻辑的正确性。

内容的提问来源于stack exchange,提问作者AAYUSH JAIN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:09:03