我制作了一个Scrapy蜘蛛,它可以从位于项目根目录中的脚本成功运行。由于我需要从同一个脚本运行来自不同项目的多个蜘蛛(这将是一个根据用户请求调用脚本的django应用程序),我将脚本从其中一个项目的根目录移动到父目录。由于某种原因,该脚本不再能够获取项目的自定义设置,以便将抓取的结果通过管道传输到数据库表中。这是我用来从脚本运行蜘蛛的scrapy文档中的代码:defspiderCrawl():settings=get_project_settings()settings.set('USER_AGENT','Mozilla/4.0(compatible;MSIE7.0;WindowsN
我正在尝试创建一个基于JsonLinesItemExporter的自定义ScrapyItemExporter,这样我就可以稍微改变它生成的结构。我已阅读此处的文档http://doc.scrapy.org/en/latest/topics/exporters.html但它没有说明如何创建自定义导出器、将其存储在何处或如何将其链接到您的管道。我已经确定了如何使用FeedExporter进行定制,但这不符合我的要求,因为我想从我的管道中调用这个导出器。这是我想出的代码,它存储在项目根目录中名为exporters.py的文件中fromscrapy.contrib.exporterimport
我正在使用Scrapy来抓取一些页面。我从Excel工作表中获取start_urls,我需要将url保存在项目中。classabc_Spider(BaseSpider):name='abc'allowed_domains=['abc.com']wb=xlrd.open_workbook(path+'/somefile.xlsx')wb.sheet_names()sh=wb.sheet_by_name(u'Sheet1')first_column=sh.col_values(15)start_urls=first_columnhandle_httpstatus_list=[404]def
我基本上有一个start_url,它有我的javascript搜索表单和按钮,因此需要selenium。我使用selenium在我的选择框对象中选择适当的项目,然后单击搜索按钮。接下来的页面,我做了一些scrapy魔术。但是,现在我想回到原来的start_url并填写一个不同的对象等,然后重复直到不再。基本上,我已经尝试制作一个for循环并试图让浏览器返回到原始response.url,但不知何故它崩溃了。我可能会尝试在顶部有一个重复的start_url列表,以便scrapy解析,但我不确定这是否是最好的方法。在我的情况下我能做什么? 最佳答案
系统:Ubuntu14.04我使用命令sudopipinstallscrapy安装了scrapy。我正在学习位于here的教程.当我在this运行命令scrapycrawldmoz时步骤,我收到以下错误:2015-07-0415:28:58[scrapy]INFO:Scrapy1.0.1started(bot:tutorial)2015-07-0415:28:58[scrapy]INFO:Optionalfeaturesavailable:ssl,http112015-07-0415:28:58[scrapy]INFO:Overriddensettings:{'NEWSPIDER_MO
我正在尝试保存我尝试过的scrapycrawl命令的输出scrapycrawlsomeSpider-osome.json-tjson>>some.text但它不起作用......有人能告诉我如何将输出保存到文本文件......我的意思是scrapy打印的日志和信息...... 最佳答案 您可以将这些行添加到您的settings.py:LOG_STDOUT=TrueLOG_FILE='/tmp/scrapy_output.txt'然后开始正常抓取:scrapycrawlsomeSpider
当我想安装Scrapy时遇到这个错误:warning:nopreviously-includedfilesfoundmatching'*.py'Requirementalreadysatisfied(use--upgradetoupgrade):pyOpenSSLin/usr/local/lib/python2.7/site-packages/pyOpenSSL-0.14-py2.7.egg(fromScrapy)Requirementalreadysatisfied(use--upgradetoupgrade):cssselect>=0.9in/usr/local/lib/pytho
我希望能够运行Scrapywebcrawlingframework从Django内部。Scrapy本身只提供了一个命令行工具scrapy来执行它的命令,即该工具并不是有意编写为从外部程序调用。用户MikhailKorobov想出了一个nicesolution,即从Django自定义管理命令调用Scrapy。为方便起见,我在这里重复他的解决方案:#-*-coding:utf-8-*-#myapp/management/commands/scrapy.pyfrom__future__importabsolute_importfromdjango.core.management.baseim
这个问题必然有两种形式,因为我不知道更好的解决方案。我正在爬行的网站经常将我踢到重定向的“用户被阻止”页面,但频率(按请求/时间)似乎是随机的,而且它们似乎有一个黑名单阻止了我的许多“开放”代理列表通过Proxymesh使用。所以……当Scrapy收到对其请求的“重定向”时(例如DEBUG:从(GEThttp://.../page-544.htm)),它是继续尝试访问page-544.htm,还是继续访问page-545.htm并永远丢失page-544.htm?如果它“忘记”(或将其计为已访问),是否有办法告诉它继续重试该页面?(如果它自然而然地这样做,那么是的,很高兴知道...)什
我已经禁用了默认的Scrapycookie选项,所以我必须手动设置它。COOKIES_ENABLED=FalseCOOKIES_DEBUG=True现在,我需要使用作为同一站点的响应接收到的值来设置cookie。我可以获得如下cookie,cookie=response.headers.getlist('Set-Cookie')[0].split(";")[0].split("=")现在我正在尝试将其设置为表单请求FormRequest.from_response(response,formdata={"username":"asldkfs","pass":"slskd"},cooki