我正在尝试抓取足以阻止bot的复杂网站,我的意思是在Scrapy挂起后,它只允许几个请求。

问题1:有办法,如果Scrapy挂起,我可以从同一点重新开始抓取过程。
为了摆脱这个问题,我这样写了我的设置文件

BOT_NAME = 'MOZILLA'
BOT_VERSION = '7.0'

SPIDER_MODULES = ['yp.spiders']
NEWSPIDER_MODULE = 'yp.spiders'
DEFAULT_ITEM_CLASS = 'yp.items.YpItem'
USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)

DOWNLOAD_DELAY = 0.25
DUPEFILTER=True
COOKIES_ENABLED=False
RANDOMIZE_DOWNLOAD_DELAY=True
SCHEDULER_ORDER='BFO'

这是我的程序:
class ypSpider(CrawlSpider):

   name = "yp"


   start_urls = [
       SOME URL

   ]
   rules=(
      #These are some rules
   )
   def parse_item(self, response):
   ####################################################################
   #cleaning the html page by removing scripts html tags
   #######################################################
   hxs=HtmlXPathSelector(response)

问题是我可以在哪里写http代理,是否必须导入任何与tor相关的类,我对Scrapy还是陌生的,因为我从中学到了很多东西,现在我正在尝试学习“如何使用ip rotation或tor”

正如我们的一位成员建议的那样,我启动了tor并将HTTP_PROXY设置为
set http_proxy=http://localhost:8118

但这会引发一些错误,
failure with no frames>: class 'twisted.internet.error.ConnectionRefusedError'   Connection was refused by other side 10061: No connection could be made because the target machine actively refused it.

所以我将http_proxy更改为
set http_proxy=http://localhost:9051

现在的错误是
failure with no frames>: class 'twisted.internet.error.ConnectionDone' connection was closed cleanly.

我检查了firefox的网络设置,那里看不到任何http代理,但是使用SOCKSV5代替了它,而是显示127.0.0.1:9051。 (在TOR之前,它没有代理)请帮助我,我仍然不了解如何通过Scrapy使用TOR。
我应该使用哪个TOR包以及如何使用?
我希望我的两个问题都能得到解决
  • 如果由于某些原因(连接失败)而挂起了令人抓狂的爬网程序,我想从那里本身恢复服务
  • 如何在Scrapy中使用旋转IP
  • 最佳答案

    TOR本身不是http代理,端口8118和连接被拒绝错误表明您没有privoxy [1]运行正常。尝试正确设置privoxy,然后使用环境变量http_proxy=http://localhost:8118再试一次。

    我已经成功地使用privoxy顺利通过TOR进行了TOR爬网。

    [1] http://www.privoxy.org/

    关于python - 与刮板框架一起使用tor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8084423/

    10-12 20:26