首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scrapy.spidermiddlewares.offsite调试:对我想要抓取的网站的非现场请求进行了过滤。为什么我不能使用parse方法?

scrapy.spidermiddlewares.offsite调试:对我想要抓取的网站的非现场请求进行了过滤。为什么我不能使用parse方法?
EN

Stack Overflow用户
提问于 2020-11-17 21:32:08
回答 1查看 450关注 0票数 1

我的目标是在迭代get_membership_no方法中的for循环时,从解析方法中打印出一些东西。

我使用的是python3.8.5,Scrapy 1.7.3,当我运行下面提到的代码时,我得到了“过滤的离站请求”。以下是控制台输出。

这是我的代码。

代码语言:javascript
复制
import scrapy
import json
class BasisMembersSpider(scrapy.Spider):
    name = 'basis'
    allowed_domains = ['www.basis.org.bd']

    def start_requests(self):

        yield scrapy.Request(url="https://basis.org.bd/get-member-list?page=1&team=", callback=self.get_membership_no)


    def get_membership_no(self, response):

        data_array = json.loads(response.body)['data']

        for data in data_array:

            yield scrapy.Request(url='https://basis.org.bd/get-company-profile/{0}'.format(data['membership_no']), callback=self.parse)


    def parse(self, response):
        print("I want to get this line on console. thank you.")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-23 01:25:58

此行为的原因是您设置了allowed_domains = ['www.basis.org.bd'],它会阻止对basis.org.bd的请求。您可以将allowed_domains完全排除在外,也可以扩展允许的域列表,如下所示:

代码语言:javascript
复制
allowed_domains = ['www.basis.org.bd', 'basis.org.bd']

有关详细信息,请参阅allowed_domains here的文档。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64876261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档