草庐IT

python - 为 Scrapy 构建一个 RESTful Flask API

API应该允许包含用户想要抓取的URL的任意HTTPget请求,然后Flask应该返回抓取的结果。以下代码适用于第一个http请求,但在twistedreactor停止后,它不会重新启动。我什至可能没有以正确的方式解决这个问题,但我只想在Heroku上放置一个RESTfulscrapyAPI,到目前为止我能想到的就是这些。是否有更好的方法来构建此解决方案?或者我如何允许scrape_it在不停止扭曲react器(无法再次启动)的情况下返回?fromflaskimportFlaskimportosimportsysimportjsonfromn_grams.spiders.n_gram_

python - Scrapy 输出提要国际 unicode 字符(例如日语字符)

我是python和scrapy的新手,我正在学习dmoz教程。作为教程建议的开始URL的一个小变体,我从dmoz示例站点中选择了一个日语类别,并注意到我最终获得的提要导出显示了unicode数值而不是实际的日语字符。看来我需要使用TextResponse不知何故,但我不确定如何让我的蜘蛛使用该对象而不是基本Response对象。我应该如何修改我的代码以在我的输出中显示日语字符?如何去掉方括号、单引号和包装输出值的“u”?最终,我想要输出sayオンラインシェップ(这些是日文字符)代替的当前输出[u'\u30aa\u30f3\u30e9\u30a4\u30f3\u30b7\u30e7\u3

python - 理解 Scrapy 的 CrawlSpider 规则

我无法理解如何在我自己的从CrawlSpider继承的Spider中使用规则字段。我的蜘蛛正试图在旧金山的比萨饼黄页列表中爬行。我试图让我的规则保持简单,只是为了看看蜘蛛是否会爬过响应中的任何链接,但我没有看到它发生。我唯一的结果是它产生对下一页的请求,然后产生对后续页面的请求。我有两个问题:1.蜘蛛收到响应后是否先处理规则再调用回调?或相反亦然?2.规则何时适用?编辑:我想到了。我覆盖了CrawlSpider的解析方法。在查看该类中的parse方法后,我意识到这是它检查规则并抓取这些网站的地方。注意:了解您要覆盖的内容这是我的代码:fromscrapy.contrib.spiders

python - 是否可以从 Scrapy spider 运行另一个 spider?

现在我有2个蜘蛛,我想做的是Spider1转到url1如果url2出现,用url22/。还使用管道保存url1的内容。蜘蛛2转到url2并做一些事情。由于两个蜘蛛的复杂性,我想将它们分开。我尝试使用scrapycrawl的结果:defparse(self,response):p=multiprocessing.Process(target=self.testfunc())p.join()p.start()deftestfunc(self):settings=get_project_settings()crawler=CrawlerRunner(settings)crawler.craw

python - 无法在 Scrapy 蜘蛛中使用多个代理

我使用Scrapy在python中编写了一个脚本,通过代理向网页发送请求,而不更改settings.py或DOWNLOADER_MIDDLEWARES。它现在工作得很好。然而,我唯一不能使用的是创建一个代理列表,这样如果一个失败,另一个将被使用。我如何抽动这部分os.environ["http_proxy"]="http://176.58.125.65:80"以逐个获取代理列表,因为它只支持一个。对此的任何帮助将不胜感激。这是我到目前为止尝试过的(工作中的一个):importscrapy,osfromscrapy.crawlerimportCrawlerProcessclassProx

python - Scrapy 抑制处理的错误

相关代码defstart_requests(self):requests=[Request(url['url'],meta=url['meta'],callback=self.parse,errback=self.handle_error)forurlinself.start_urlsifvalid_url(url['url'])]returnrequestsdefhandle_error(self,err):#ErrorsbeingsavedinDB#SoIdon'twantthemdisplayedinthelogs我有自己的代码用于在数据库中保存错误代码。我不希望它们显示在日志输

python - 按计划进行 Scrapy

让Scrapy按计划运行让我绕过Twist(ed)。我认为下面的测试代码可以工作,但是当蜘蛛第二次被触发时我得到了一个twisted.internet.error.ReactorNotRestartable错误:fromquotesbot.spiders.quotesimportQuotesSpiderimportscheduleimporttimefromscrapy.crawlerimportCrawlerProcessdefrun_spider_script():process.crawl(QuotesSpider)process.start()process=CrawlerPr

python - 使用scrapy下载图片时遇到问题

我用pythonscrapy编写了一个脚本,用于从网站下载一些图像。当我运行我的脚本时,我可以在控制台中看到图像链接(所有这些都是.jpg格式)。但是,当我打开下载完成后应该保存图像的文件夹时,我什么也得不到。我哪里出错了?这是我的蜘蛛(我从sublime文本编辑器运行):importscrapyfromscrapy.crawlerimportCrawlerProcessclassYifyTorrentSpider(scrapy.Spider):name="yifytorrent"start_urls=['https://www.yify-torrent.org/search/1080

python - Scrapy 蜘蛛在并行进程中的多处理

我已经在StackOverflow上阅读了几个类似的问题。不幸的是,我丢失了所有这些链接,因为我的浏览历史被意外删除。以上所有问题,都帮不了我。要么,有的用过CELERY,有的用过SCRAPYD,我想用MULTIPROCESSISNG库。此外,Scrapy官方文档展示了如何在单个进程上运行多个蜘蛛,而不是在多个进程上。他们都帮不了我,因此我决定问这个问题。经过几次尝试,我想到了这个code.我的输出-:Enteraproducttosearchfor:apple2015-06-2714:34:15[scrapy]INFO:Scrapy1.0.0started(bot:scrapybot

python - 仅限 Scrapy 正文

我正在尝试使用pythonScrapy仅从正文中抓取文本,但还没有成功。希望一些学者可以帮助我在这里从中抓取所有文本标签。 最佳答案 Scrapy使用XPath符号来提取HTML文档的各个部分。那么,您是否尝试过使用/html/body提取路径?(假设它嵌套在中)。使用//body可能更简单选择器:x.select("//body").extract()#extractbody您可以找到有关Scrapy提供的选择器的更多信息here. 关于python-仅限Scrapy正文,我们在Sta