【发布时间】: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