草庐IT

python - 碎屑,Python : Multiple Item Classes in one pipeline?

我有一个Spider可以抓取无法保存在一个项目类中的数据。为了说明,我有一个配置文件项,每个配置文件项可能有未知数量的评论。这就是为什么我要实现ProfileItem和CommentItem的原因。我知道我可以简单地使用yield将它们传递到我的管道。但是,我不知Prop有一个parse_item函数的管道如何处理两个不同的项目类?或者是否可以使用不同的parse_item函数?或者我必须使用多个管道吗?或者是否可以将Iterator写入ScrapyItemField?comments_list=[]comments=response.xpath(somexpath)forxincom

python - Scrapy 的代理池系统暂时停止使用慢速/超时代理

我一直在四处寻找,试图为Scrapy找到一个像样的池化系统,但我找不到任何我需要/想要的东西。我正在寻找解决方案:轮换代理我希望他们在代理之间随机切换,但绝不会连续两次选择同一个代理。(Scrapoxy有这个)模拟已知浏览器模拟Chrome、Firefox、InternetExplorer、Edge、Safari等(Scrapoxy有这个)黑名单慢速代理如果代理超时或速度慢,则应通过一系列规则将其列入黑名单...(Scrapoxy仅针对实例/启动数量列入黑名单)如果代理很慢(占用x时间),则应将其标记为Slow,并应采用时间戳并增加计数器。如果代理超时,则应将其标记为失败,并记录时间戳

python - 使用 PyCharm 运行 scrapy - 调试有效但运行无效

我遇到了一个很奇怪的问题,用PyCharm运行Scrapy:使用完全相同的配置,调试可以工作,但使用PyCharm运行不工作。window10PyCharm2016.3.3抓取1.3.3python3.6.0配置:PyCharmEditConfigurationPage当我尝试调试scrapy时,它工作得很好。当我尝试运行scrapy时,出现以下错误:C:\Users\baib2\AppData\Local\Programs\Python\Python36\python.exeC:/Users/baib2/AppData/Local/Programs/Python/Python36/L

python - 类型错误 : Object of type 'bytes' is not JSON serializable

我刚开始编程Python。我想用scrapy创建一个bot,结果显示类型错误:当我运行项目时,“字节”类型的对象不是JSON可序列化的。importjsonimportcodecsclassW3SchoolPipeline(object):def__init__(self):self.file=codecs.open('w3school_data_utf8.json','wb',encoding='utf-8')defprocess_item(self,item,spider):line=json.dumps(dict(item))+'\n'#printlineself.file.wr

python - 使用 Python 和 Scrapy 进行递归爬取

我正在使用scrapy来抓取网站。该站点每页有15个列表,然后有一个下一步按钮。我遇到了一个问题,在我完成解析管道中的所有列表之前,我对下一个链接的请求被调用。这是我的蜘蛛的代码:classMySpider(CrawlSpider):name='mysite.com'allowed_domains=['mysite.com']start_url='http://www.mysite.com/'defstart_requests(self):return[Request(self.start_url,callback=self.parse_listings)]defparse_listi

python - 对多个网站使用一个 Scrapy 蜘蛛

我需要创建一个用户可配置的网络蜘蛛/爬虫,我正在考虑使用Scrapy。但是,我无法对域和允许的URLregex:es进行硬编码——这将在GUI中进行配置。我如何(尽可能简单地)使用Scrapy创建一个蜘蛛或一组蜘蛛,其中域和允许的URLregex:es是动态可配置的?例如。我将配置写入一个文件,蜘蛛以某种方式读取它。 最佳答案 警告:这个答案是针对Scrapyv0.7的,蜘蛛管理器api从那时起发生了很大变化。覆盖默认的SpiderManager类,从数据库或其他地方加载您的自定义规则,并使用您自己的规则/正则表达式和域名实例化自定

python - 我怎样才能停止一个 scrapy CrawlSpider 并稍后从它停止的地方恢复?

我有一个ScrapyCrawlSpider有一个非常大的要抓取的URL列表。我希望能够停止它,保存当前状态并在以后恢复它而不必重新开始。有没有办法在Scrapy框架内完成这个? 最佳答案 只是想分享一下最新的scrapy版本中包含的功能,但参数名称已更改。你应该像这样使用它:scrapycrawlthespider--setJOBDIR=run1更多信息请点击此处http://doc.scrapy.org/en/latest/topics/jobs.html#job-directory

python - Scrapy - Reactor 不可重启

这个问题在这里已经有了答案:ReactorNotRestartableerrorinwhileloopwithscrapy(10个答案)关闭3年前。与:fromtwisted.internetimportreactorfromscrapy.crawlerimportCrawlerProcess我总是成功地运行这个过程:process=CrawlerProcess(get_project_settings())process.crawl(*args)#thescriptwillblockhereuntilthecrawlingisfinishedprocess.start()但由于我已将

python - Scrapy 安装失败,出现错误 'cannot open include: ' openssl/aes.h '

我正在尝试使用easy_install-UScrapy安装Scrapy,但在尝试安装时出现奇怪的错误“无法打开包含文件”。有谁知道发生了什么事?这是我的完整回溯:C:\Users\MubasharKamran>easy_install-UScrapySearchingforScrapyReadinghttps://pypi.python.org/simple/Scrapy/Bestmatch:scrapy0.24.4Processingscrapy-0.24.4-py2.7.eggscrapy0.24.4isalreadytheactiveversionineasy-install.p

python - 在 Scrapy 中本地运行所有的爬虫

有没有办法在不使用Scrapy守护进程的情况下运行Scrapy项目中的所有爬虫?曾经有一种方法可以使用scrapycrawl运行多个爬虫,但该语法已被删除并且Scrapy的代码发生了很大变化。我尝试创建自己的命令:fromscrapy.commandimportScrapyCommandfromscrapy.utils.miscimportload_objectfromscrapy.confimportsettingsclassCommand(ScrapyCommand):requires_project=Truedefsyntax(self):return'[options]'def