我的scrapy爬行速度很慢(大约1页/秒)。我正在从aws服务器抓取一个主要网站,所以我认为这不是网络问题。CPU利用率远未接近100,如果我启动多个scrapy进程,爬网速度会快得多。Scrapy好像爬了一堆页面,然后挂了几秒,然后重复。我试过玩:CONCURRENT_REQUESTS=CONCURRENT_REQUESTS_PER_DOMAIN=500但这似乎并没有真正让指针超过20。 最佳答案 您确定允许高速抓取目标站点吗?许多网站实现下载阈值,“一段时间后”开始响应缓慢。 关于
我正在尝试从使用__doPostBack函数的网站抓取搜索结果。该网页为每个搜索查询显示10个结果。要查看更多结果,必须单击触发__doPostBackjavascript的按钮。经过一些研究,我意识到POST请求的行为就像一个表单,可以简单地使用scrapy的FormRequest来填写该表单。我使用了以下线程:Troublesusingscrapywithjavascript__doPostBackmethod编写以下脚本。#-*-coding:utf-8-*-fromscrapy.contrib.spidersimportCrawlSpiderfromscrapy.httpimp
我有一个Scrapy项目,我试图将输出项目保存为Django模型定义中的对象(我没有使用DjangoItem)。我正在导入指定的Django设置here.defsetup_django_env(path):importimp,osfromdjango.core.managementimportsetup_environf,filename,desc=imp.find_module('settings',[path])project=imp.load_module('settings',f,filename,desc)setup_environ(project)setup_django_
我是scrapy的新手。我正在编写一个蜘蛛,旨在检查服务器状态代码的一长串URL,并在适当的情况下检查它们被重定向到的URL。重要的是,如果存在重定向链,我需要知道每次跳转时的状态码和url。我正在使用response.meta['redirect_urls']来捕获url,但我不确定如何捕获状态代码-似乎没有响应元键。我意识到我可能需要编写一些自定义中间件来公开这些值,但不太清楚如何记录每一跳的状态代码,也不清楚如何从蜘蛛访问这些值。我看过但找不到任何人这样做的例子。如果有人能指出我正确的方向,将不胜感激。例如,items=[]item=RedirectItem()item['url
我想为我在spider的start_urls中设置的每个url创建单独的输出文件,或者想以某种方式拆分输出文件开始url。以下是我的蜘蛛的start_urlsstart_urls=['http://www.dmoz.org/Arts/','http://www.dmoz.org/Business/','http://www.dmoz.org/Computers/']我想创建单独的输出文件,例如Arts.xml业务.xml计算机.xml我不知道该怎么做。我正在考虑通过在项目管道类的spider_opened方法中实现一些类似以下的东西来实现这一点,importrefromscrapyim
在Mac上,我安装了Jupyter,当我从Scrapy项目的根文件夹中键入jupyternotebook时,它会打开笔记本。此时我可以浏览所有项目文件。如何从笔记本执行项目?如果我单击“终端”下的“运行”选项卡,我会看到:Therearenoterminalsrunning. 最佳答案 有两种主要方法可以实现:1.在Files选项卡下打开一个新终端:New>Terminal然后简单地运行你的蜘蛛:scrapycrawl[options]2。创建一个新笔记本并使用CrawlerProcess或CrawlerRunner在单元格中运行的
我正在尝试在Windows8.1上安装适用于Python2.7的Scrapy,我知道我首先需要安装pip。由于我通过ArcGIS10.2安装了Python,我认为我需要在C:\Python27\ArcGIS10.2\lib\site-packages下安装pip。在该目录中安装pip后,我收到错误代码:>>>importpipTraceback(mostrecentcalllast):File"",line1,inFile"C:\Python27\ArcGIS10.2\lib\site-packages\pip\__init__.py",line10,infrompip.utilimp
我想编写一个服务器来处理Websocket客户端,同时通过sqlalchemy执行mysql选择并同时抓取多个网站(抓取)。必须计算接收到的数据,将其保存到数据库,然后发送到websocket客户端。我的问题是从逻辑的角度来看,如何在Python中完成此操作。我需要如何设置代码结构以及哪些模块是这项工作的最佳解决方案?目前,我确信使用twistedwiththreads在其中运行scrape和select东西。但这可以用更简单的方法来完成吗?我只找到简单的扭曲示例,但显然这似乎是一项更复杂的工作。有没有类似的例子?我该如何开始? 最佳答案
我是scrapy的新手,由于在线评论很好,所以决定尝试一下。我正在尝试使用scrapy登录网站。通过用Selenium收集所需的cookie并将它们添加到机械化,我已经成功地使用Selenium和机械化的组合登录。现在我正在尝试用scrapy和selenium做一些类似的事情,但似乎什么都做不了。我什至无法判断是否有任何工作。谁能帮帮我吗。以下是我开始的内容。我可能甚至不需要用scrapy传输cookie,但我无法判断它是否真的登录过。谢谢fromscrapy.spiderimportBaseSpiderfromscrapy.httpimportResponse,FormRequest
我通过这样做来运行一个scrapy日志:fromscrapyimportlogclassMySpider(BaseSpider):name="myspider"def__init__(self,name=None,**kwargs):LOG_FILE="logs/spider.log"log.log.defaultObserver=log.log.DefaultObserver()log.log.defaultObserver.start()log.started=Falselog.start(LOG_FILE,loglevel=log.INFO)super(MySpider,self