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

运行scrapy crawl Admission命令出现Filtered offsite request报错如何解决

Scrapy offsite请求拦截报错解决方案

报错原因

Scrapy的allowed_domains白名单机制会自动拦截所有不在域名白名单内的请求,你触发报错的核心问题是手动拼接URL时域名拼写错误,和配置的白名单不匹配:

  • 配置的白名单域名:www.worldometers.info(正确拼写,含字母e)
  • 拼接的请求域名:www.worldomets.info(漏写字母e,不属于白名单范围)

修复方案

方案1(推荐):修正域名拼写+使用自动拼接工具

直接用Scrapy内置的response.urljoin()方法拼接相对路径,完全避免手动写域名导致的拼写错误,同时补充国家名称打印逻辑,满足你的需求:

import scrapy
class AdmissionsSpider(scrapy.Spider):
    name = 'Admission'
    allowed_domains = ["www.worldometers.info"]
    start_urls = ['https://www.worldometers.info/population/countries-in-asia-by-population/']

    def parse(self, response):
        countries=response.xpath("//td/a")
        for country in countries:
            name=country.xpath(".//text()").get()
            # 打印抓取到的国家名称
            print(name)
            links=country.xpath(".//@href").get()
            # 自动拼接绝对URL,无需手动写域名
            absolute_url = response.urljoin(links)
            yield scrapy.Request(url=absolute_url)

方案2(临时兼容):关闭请求过滤

如果确实需要请求白名单外的域名,可在构造Request时添加dont_filter=True参数,关闭当前请求的域名校验:

yield scrapy.Request(url=absolute_url, dont_filter=True)

内容的提问来源于stack exchange,提问作者Muhammad Zahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:00