Scrapy spider无法爬网url,但Scrapy shell成功完成了

2024-05-16 20:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在努力讨好克雷格利斯特。当我试图在spider中获取https://tampa.craigslist.org/search/jjj?query=bookkeeper时,出现以下错误:

(添加额外的换行符和空白以提高可读性)

[scrapy.downloadermiddlewares.retry] DEBUG:
    Retrying <GET https://tampa.craigslist.org/search/jjj?query=bookkeeper> (failed 1 times):
    [<twisted.python.failure.Failure twisted.internet.error.ConnectionLost:
    Connection to the other side was lost in a non-clean fashion: Connection lost.>]

但是,当我试着在破壳上爬行时,它被成功地爬行了。在

^{pr2}$

我不知道我做错了什么。我尝试过强制TLSv1.2,但没有成功。我真的很感激你的帮助。 谢谢!在


Tags: httpsorgsearch错误twistedconnectionquery空白
1条回答
网友
1楼 · 发布于 2024-05-16 20:29:20

我要求在注释中使用MCVE,这意味着您应该提供一个最小的、完整的、可验证的示例。 为了帮助你,这就是它的全部内容:

import scrapy


class CLSpider(scrapy.Spider):
    name = 'CL Spider'
    start_urls = ['https://tampa.craigslist.org/search/jjj?query=bookkeeper']

    def parse(self, response):
            for url in response.xpath('//a[@class="result-title hdrlnk"]/@href').extract():
                yield scrapy.Request(response.urljoin(url), self.parse_item)

    def parse_item(self, response):
        # TODO: scrape item details here
        return {
            'url': response.url,
            # ...
            # ...
        }

现在,这个MCVE可以简单地做你想做的一切:

  • 访问其中一个搜索页面
  • 迭代结果
  • 访问每个项目进行分析

这应该是调试的起点,删除所有不相关的样板文件。

请测试上面的内容并验证它是否有效?如果它能正常工作,就可以在步骤中添加更多的功能,这样您就可以确定是哪个部分导致了问题。如果它不起作用,在你弄清楚原因之前不要添加任何其他东西。

更新:

添加请求之间的延迟有两种方法:

  1. settings.py中的所有蜘蛛全局性地执行,方法是为每次下载之间的延迟指定例如DOWNLOAD_DELAY = 2

  2. 通过定义属性download_delay

例如:

^{pr2}$

文档:https://doc.scrapy.org/en/latest/topics/settings.html#download-delay

相关问题 更多 >