首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >做一个好公民,抓取网络

做一个好公民,抓取网络
EN

Stack Overflow用户
提问于 2011-12-17 12:18:20
回答 2查看 1.1K关注 0票数 6

我有一个两部分的问题。

首先,我正在使用Scrapy编写一个基于CrawlSpider爬行器的网络爬行器。我的目标是抓取一个有数千条(可能是数十万条)记录的网站。这些记录从起始页往下埋了2-3层。所以基本上我让爬虫从某个页面开始,爬行直到它找到特定类型的记录,然后解析html。我想知道的是,有什么方法可以防止我的爬行器使站点过载?有没有可能在不同的请求之间增加或暂停?

其次,与之相关的是,有没有一种使用Scrapy的方法可以在不对网站施加过多压力的情况下测试爬虫?我知道你可以在程序运行的时候杀死它,但是有没有办法让脚本在遇到像第一页这样的页面时停止呢?

任何建议或资源都将非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-17 14:40:16

有没有可能以增量的方式来做事情

我正在使用Scrapy缓存功能来增量地抓取站点

HTTPCACHE_ENABLED = True

或者,您可以使用新的0.14功能Jobs: pausing and resuming crawls

或者在不同的请求之间暂停?

检查此设置:

代码语言:javascript
运行
复制
DOWNLOAD_DELAY    
RANDOMIZE_DOWNLOAD_DELAY

有没有一种方法可以在不对网站施加过多压力的情况下用Scrapy测试爬虫?

您可以尝试在Scrapy shell中调试代码

我知道你可以在程序运行的时候杀死它,但是有没有办法让脚本在遇到像第一页这样的页面时停止呢?

此外,您还可以随时在爬行器中调用scrapy.shell.inspect_response

我们将非常感谢您的任何建议或资源。

Scrapy文档是最好的资源。

票数 6
EN

Stack Overflow用户

发布于 2011-12-17 13:42:04

你必须开始爬行并记录所有的事情。如果你被禁止了,你可以在页面请求之前添加sleep()。

更改用户代理也是一种很好的做法(http://www.user-agents.org/ http://www.useragentstring.com/ )

如果被ip禁止,可以使用proxy绕过它。干杯。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8542552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档