scrapy SpiderMiddleware.离线调试:过滤的非现场请求到网站我想刮,为什么我不能得到解析方法?

tpxzln5u  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(100)

我的目标是当我在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.")
c9x0cxw0

c9x0cxw01#

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

allowed_domains = ['www.basis.org.bd', 'basis.org.bd']

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

6kkfgxo0

6kkfgxo02#

删除"www." from allowed_domains对我很有效。谢谢
这篇文章真的很有帮助

相关问题