小编Par*_*rag的帖子

理解Scrapy中的回调

我是Python和Scrapy的新手.我之前没有使用过回调函数.但是,我现在为下面的代码做.将执行第一个请求,并将其响应发送到定义为第二个参数的回调函数:

def parse_page1(self, response):
    item = MyItem()
    item['main_url'] = response.url
    request = Request("http://www.example.com/some_page.html",
                      callback=self.parse_page2)
    request.meta['item'] = item
    return request

def parse_page2(self, response):
    item = response.meta['item']
    item['other_url'] = response.url
    return item
Run Code Online (Sandbox Code Playgroud)

我无法理解以下事项:

  1. item人口如何?
  2. 是否request.meta行之前执行response.meta的线parse_page2
  3. 在哪里回来itemparse_page2打算?
  4. return request声明需要什么parse_page1?我认为提取的项目需要从这里返回.

python callback scrapy

11
推荐指数
1
解决办法
1万
查看次数

500 内部服务器错误

我正在使用scrapy来抓取超过400万种产品的产品网站。然而,在抓取大约 50k 产品后,它开始抛出 500 HTTP 错误。我已将 Auto throttling 设置为 false ,因为在启用其非常慢后,将需要大约 20-25 天才能完成抓取。我认为服务器在一段时间后开始暂时阻止爬虫。任何解决方案可以做什么?我正在使用站点地图爬虫 - 如果服务器没有响应,我想从 url 本身提取一些信息并继续下一个 url 而不是完成爬行并关闭蜘蛛,为此我正在查看请求中的 errback 参数。但是,由于我使用的是站点地图爬虫,因此我没有明确创建请求对象。是否有任何我可以覆盖的默认 errback 函数或者我可以在哪里定义它。

这里定义了另一种方法- Scrapy:在请求失败(例如 404,500)时,如何请求另一个替代请求?

python web-crawler scrapy

2
推荐指数
1
解决办法
6414
查看次数

标签 统计

python ×2

scrapy ×2

callback ×1

web-crawler ×1