Scrapy。 520如何解决?

时间:2019-01-10 12:46:08

标签: scrapy

此网站回复

DEBUG: Crawled (520) <GET https://ddlfr.pw/> (referer: None)

我该如何解决?

我发布我的代码以进行解释

导入json

from scrapy import Spider, Request, Selector

class LoginSpider(Spider):
    name = 'ddlfr.pw'
    start_urls = ['https://ddlfr.pw/index.php?do=search']
    numero = 0
    def parse(self, response):
        global numero
        return scrapy.FormRequest.from_response(
            response,
            headers = {'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'},
            formdata= {'dosearch': 'Rechercher', 'story': 'musso', 'do': 'search' , 'subaction': 'search', 'search_start': str(self.numero) , 'full_search': '0', 'result_form': '1'},
            callback=self.after_login,
            dont_filter = True
        )

    def after_login(self, response):
        for title in response.xpath('//div[@class="short nl nl2"]'):
            yield {'roman': title.extract()}

2 个答案:

答案 0 :(得分:0)

是,因为网络需要有效的浏览器标题。而抓紧发送作为机器人的标头。

尝试使用这些标题:

headers = {
        'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }

forget example, verify headers and output

您可以在您的网站上看到抓取状态

答案 1 :(得分:0)

我建议您监视从Web浏览器发送表单时的Web浏览器的功能(开发人员工具的“网络”标签),并尝试使用Scrapy重现请求。

例如,在Firefox中,您可以使用curl命令的形式从“网络”选项卡复制成功的请求。