【问题标题】:Scrapy have a item limit?Scrapy有物品限制吗?
【发布时间】:2016-01-14 23:38:20
【问题描述】:

在那些日子里,我正在用 Python 中的 Scrapy 制作蜘蛛。 它基本上是一个简单的蜘蛛类,可以简单地解析 Html 页面中的某些字段。 我不使用starts_url[] Scrapy 字段,但我使用这样的个性化列表:

class start_urls_mod():
def __init__(self, url, data):
    self.url=url
    self.data=data

#Defined in the class:
url_to_scrape = []
#Populated in the body in this way
self.url_to_scrape.append(start_urls_mod(url_found), str(data_found))

这样传递url

for any_url in self.url_to_scrape:
    yield scrapy.Request(any_url.url, callback=self.parse_page)

它适用于有限数量的 url,如 3000。

但是,如果我尝试进行测试,它会发现大约 32532 url 来抓取。 在 JSON 输出文件中,我发现只抓取了大约 3000 个 url。

我的函数自己回忆:

yield scrapy.Request(any_url.url, callback=self.parse_page)

所以问题是,Scrapy 项目有一些内存限制吗?

【问题讨论】:

  • 手册中有一整节关于内存使用限制。问题是在调用随机 url 时,您可能会发现有人托管 1gb 文件..这可能会严重破坏您正在拉动的服务器。你是否开启了内存使用扩展,(见doc.scrapy.org/en/latest/topics/…
  • @JamesTaylor 所以我需要增加 MEMUSAGE_LIMIT_MB 并设置一个高值以不停止程序?
  • 如果你达到了内存限制,Scrapy/Python 会抛出一个异常指示。如果是这样,请确定它为什么使用 35k 的内存请求并没有那么多可以坐在那里(它们并不是那么大)。 Scrapy 持有响应对象或项目的时间不应超过处理它们所需的时间。
  • 这能回答你的问题吗? Scrapy Limit Requests For Testing

标签: python python-2.7 class web-crawler scrapy


【解决方案1】:

否,如果您尚未在设置中指定 CLOSESPIDER_ITEMCOUNT

也许 scrapy 在您的请求中发现了重复项,请检查该统计信息是否在您的日志中包含类似 dupefilter/filtered 的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多