草庐IT

python - Scrapy 自定义导出器

我正在定义一个将项目推送到消息队列的项目导出器。下面是代码。fromscrapy.contrib.exporterimportJsonLinesItemExporterfromscrapy.utils.serializeimportScrapyJSONEncoderfromscrapyimportlogfromscrapy.confimportsettingsfromcarrot.connectionimportBrokerConnection,Exchangefromcarrot.messagingimportPublisherlog.start()classQueueItemExp

python - 如何在 Scrapy 中使用 ssl 客户端证书(p12)?

我需要使用p12(PKCS12)格式的客户端证书文件与scrapy的网络服务器通信,有没有办法做到这一点? 最佳答案 我无法在这里为您提供经过测试的完整解决方案,但我知道一些地方,在这些地方进行一些调整可能会满足您的需求。起点是scrapy的ContextFactory对象,它定义了SSL/TLS配置。标准实现ScrapyClientContextFactory不使用客户端证书,也不进行任何服务器证书验证,它只接受任何证书。(Moredetails)查看sourcecode时但是,您会看到替代方案BrowserLikeContext

python - Scrapy - 关注 RSS 链接

我想知道是否有人曾尝试使用以下方法提取/跟踪RSS项目链接SgmlLinkExtractor/CrawlSpider。我无法让它工作...我正在使用以下规则:rules=(Rule(SgmlLinkExtractor(tags=('link',),attrs=False),follow=True,callback='parse_article'),)(请记住,RSS链接位于link标记中)。我不确定如何告诉SgmlLinkExtractor提取text()链接而不是搜索属性...欢迎任何帮助,提前致谢 最佳答案 CrawlSpide

python - Scrapy:捕获具有特定 HTTP 服务器代码的响应

我们有一个非常标准的Scrapy项目(Scrapy0.24)。我想捕获特定的HTTP响应代码,例如200、500、502、503、504等。类似的东西:classSpider(...):defparse(...):processesHTTP200defparse_500(...):processesHTTP500errorsdefparse_502(...):processesHTTP502errors...我们怎样才能做到这一点? 最佳答案 默认情况下,Scrapy只处理状态码为200-300的响应。LetScrapyhandle

python - scrapy:中间件/管道单例

我正在创建一个本地响应缓存,我正在为其创建一个Pipeline,因为我需要根据从站点收集的ID来存储项目的信息。现在我还需要创建一个DownloaderMiddleware,因为根据我之前存储的ID,我不想用新的Request访问该站点,所以我在将Request发送到服务器之前拦截它,检查该ID是否已存在于我的缓存中,如果存在,则只从我的缓存中返回相同的项目。现在你看到Pipeline和Middleware需要一起工作,所以分离看起来不是很干净(我也有我想要的变量独特的),但是当我在各自的设置上进行设置时:DOWNLOADER_MIDDLEWARES={'myproject.urlca

python - Scrapy 解析 javascript

我在页面上有一个javascript,如下所示:newShopify.OptionSelectors("product-select",{product:{"id":185310341,"title":"10.Design|Siyah\u0026beyazkalpli",我想得到“185310341”。我在谷歌上搜索了大约几个小时,但找不到任何东西,我希望你能帮助我。我怎样才能抓取那个javascript并获得那个id?我试过那个代码:id=sel.search('"id":(.*?),',text).group(1)printid但是我得到了:exceptions.Attribute

python - 在 OS X 上的 virtualenv 中为 scrapy 安装加密时发生错误

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion我在OSX10.11上的virtualenv中使用pip安装scrapy。当它安装密码时,它说:building'_openssl'extensioncc-fno-strict-aliasing-fno-common-dynamic-archi386-a

python - Scrapy: 在一个请求失败时(例如404,500),如何请求另一个备选请求?

我对scrapy有疑问。在一个请求失败时(例如404,500),如何请求另一个替代请求?比如两个链接都可以获取价格信息,一个失败,自动请求另一个。 最佳答案 在请求中使用“errback”errback=self.error_handler其中error_handler是一个函数(就像回调函数一样),在此函数中检查错误代码并发出替代请求。参见scrapy文档中的errback:http://doc.scrapy.org/en/latest/topics/request-response.html

python - 启动新的 scrapy 项目时出错

我已经使用Scrapy网站上提供的Ubuntu软件包安装了Scrapy。但是在开始一个Scrapy项目时scrapystartprojecttest我收到错误消息。Traceback(mostrecentcalllast):File"/usr/bin/scrapy",line5,infrompkg_resourcesimportload_entry_pointFile"build/bdist.linux-x86_64/egg/pkg_resources/__init__.py",line3084,inFile"build/bdist.linux-x86_64/egg/pkg_resou

python - python中的Scrapy Crawler无法跟踪链接?

我用python的scrapy工具写了一个python的爬虫。以下是python代码:fromscrapy.contrib.spidersimportCrawlSpider,Rulefromscrapy.contrib.linkextractors.sgmlimportSgmlLinkExtractorfromscrapy.selectorimportHtmlXPathSelector#fromscrapy.itemimportItemfroma11ypi.itemsimportAYpiItemclassAYpiSpider(CrawlSpider):name="AYpi"allowe