【问题标题】:Why my scrapy does not used all urls in start_urls list?为什么我的 scrapy 没有使用 start_urls 列表中的所有 url?
【发布时间】:2015-02-03 22:46:59
【问题描述】:

我的 start_urls 列表中有近 300 个 url,但 scrapy 只写了大约 200 个 url。但并非所有这些列出的网址。我不知道为什么?我该如何处理。我必须从网站上潦草地写更多的项目。

另一个我不明白的问题是:scrapy 完成时如何查看日志错误?从终端或我必须编写代码才能看到日志错误。我认为日志是默认启用的。

感谢您的回答。


更新:

输出如下。我不知道为什么只有 2829 项被刮掉。我的 start_urls 实际上有 600 个 url。

但是当我在 start_urls 中只给出 400 个 url 时,它可以抓取 6000 个项目。我希望能刮掉 www.yhd.com 的几乎整个网站。谁能提供更多建议?

2014-12-08 12:11:03-0600 [yhd2] INFO: Closing spider (finished)
2014-12-08 12:11:03-0600 [yhd2] INFO: Stored csv feed (2829 items) in myinfoDec.csv        
2014-12-08 12:11:03-0600 [yhd2] INFO: Dumping Scrapy stats:
{'downloader/exception_count': 1,
'downloader/exception_type_count/twisted.web._newclient.ResponseNeverReceived': 1,
'downloader/request_bytes': 142586,
'downloader/request_count': 476,
'downloader/request_method_count/GET': 476,
'downloader/response_bytes': 2043856,
'downloader/response_count': 475,
'downloader/response_status_count/200': 474,
'downloader/response_status_count/504': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2014, 12, 8, 18, 11, 3, 607101),
'item_scraped_count': 2829,
'log_count/DEBUG': 3371,
'log_count/ERROR': 1,
'log_count/INFO': 14,
'response_received_count': 474,
'scheduler/dequeued': 476,
'scheduler/dequeued/memory': 476,
'scheduler/enqueued': 476,
'scheduler/enqueued/memory': 476,
'start_time': datetime.datetime(2014, 12, 8, 18, 4, 19, 698727)}
2014-12-08 12:11:03-0600 [yhd2] INFO: Spider closed (finished)

【问题讨论】:

  • 关于日志,也许你应该将日志级别设置为DEBUG?
  • 关于网址,你确定没有一个是重复的吗? scrapy 过滤重复请求。
  • 虽然代码似乎为 start_urls 中的 url 启用了 dont_filter 选项:github.com/scrapy/scrapy/blob/master/scrapy/spider.py#L60
  • 对于这么多起始 URL,您应该考虑使用 start_requests() 并从那里产生请求。对于日志,请考虑像这样运行您的蜘蛛:scrapy crawl myspider -o out.jl > myspider.log 2>&1 - 这样您将获得日志文件中的所有输出。从那里您可能会发现某些 URL 被删除的原因。会不会是其中一些格式不正确?喜欢没有“http”部分?
  • @elias 谢谢。我在 start_urls 中的 url 可能包含重复的。但我不认为重复的比例很高。我将设置日志级别并使用命令行显示日志。

标签: python-2.7 scrapy scrapy-spider scrapy-shell


【解决方案1】:

我终于解决了这个问题....

首先,它不会抓取 start_urls 中列出的所有 url,因为我在 start_urls 中的 url 中有错字。其中一个“http://...”被误写为“ttp://...”,缺少第一个“h”。然后蜘蛛似乎停下来查看它后面列出的其余网址。吓坏了。

其次,我通过单击Pycharm的配置面板解决了日志文件问题,它提供了显示日志文件面板。顺便说一下,我的scrapy框架被放到了Pycharm IDE中。这对我很有效。不是广告。

感谢所有 cmets 和建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多