scrapy.spidermiddlewares.offsite DEBUG:过滤对我想要抓取的网站的异地请求。为什么我不能解析方法?

Kam*_*san 2 python scrapy web-scraping

我的目标是当我迭代 get_membership_no 方法中的 for 循环时,从 parse 方法中打印一些内容。

我正在使用 python3.8.5、Scrapy 1.7.3,当我运行下面提到的代码时,我得到“已过滤的异地请求”。这是控制台输出。 在此输入图像描述

这是我的代码。

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.")
Run Code Online (Sandbox Code Playgroud)

Pat*_*ein 7

出现此行为的原因是您设置了allowed_domains = ['www.basis.org.bd'],这会阻止对 的请求basis.org.bd。您可以allowed_domains完全省略或扩展允许的域列表,如下所示:

allowed_domains = ['www.basis.org.bd', 'basis.org.bd']
Run Code Online (Sandbox Code Playgroud)

allowed_domains 请参阅此处的文档以获取更多信息。