草庐IT

python - Scrapy 好像没有做 DFO

我有一个网站,我的爬虫需要遵循一个序列。因此,例如,它需要在开始进入a2之前进入a1、b1、c1等。a、b和c中的每一个都由不同的解析函数处理,并且相应的url在Request对象中创建并产生。以下粗略地说明了我正在使用的代码:classaspider(BaseSpider):defparse(self,response):yieldRequest(b,callback=self.parse_b,priority=10)defparse_b(self,response):yieldRequest(c,callback=self.parse_c,priority=20)defparse_

python - 用于 AJAX 内容的 Scrapy CrawlSpider

我正在尝试抓取新闻文章的站点。我的start_url包含:(1)每篇文章的链接:http://example.com/symbol/TSLA和(2)一个“更多”按钮,它进行AJAX调用,在同一start_url中动态加载更多文章:http://example.com/account/ajax_headlines_content?type=in_focus_articles&page=0&slugs=tsla&is_symbol_page=trueAJAX调用的一个参数是“页面”,每次单击“更多”按钮时该参数都会递增。例如,点击“更多”一次,会额外加载n篇文章,并在“更多”按钮的onCl

python - 在 python Scrapy 中执行 SplashRequest 时添加等待元素

我正在尝试在python中使用SplashforScrapy来抓取一些动态网站。但是,我看到Splash在某些情况下无法等待完整页面加载。解决此问题的一种蛮力方法是添加较长的wait时间(例如,以下代码段中的5秒)。然而,这是非常低效的,并且仍然无法加载某些数据(有时加载内容需要超过5秒)。是否存在某种可以通过这些请求放置的等待元素条件?yieldSplashRequest(url,self.parse,args={'wait':5},'User-Agent':"Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko

python - 如何基于Scrapy搭建一个永远运行的网络爬虫?

我想建立一个基于Scrapy的网络爬虫,从多个新闻门户网站抓取新闻图片。我希望这个爬虫是:永远奔跑表示它将定期重新访问一些门户页面以获取更新。安排优先事项。为不同类型的URL赋予不同的优先级。多线程抓取我已经阅读了Scrapy文档,但没有找到与我列出的内容相关的内容(可能是我不够细心)。这里有人知道该怎么做吗?或者只是给出一些想法/例子。谢谢! 最佳答案 Scrapy是一个用于抓取网站的框架,因此,它旨在支持您的标准,但它不会开箱即用;对于某些任务,您可能必须相对熟悉该模块。永远运行取决于调用Scrapy的应用程序。你告诉thesp

python - 如何在scrapy中处理302重定向

我在删除网站时收到来自服务器的302响应:2014-04-0121:31:51+0200[ahrefs-h]DEBUG:Redirecting(302)tofrom我想发送请求到GETurl而不是被重定向。现在我找到了这个中间件:https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/downloadermiddleware/redirect.py#L31我将此重定向代码添加到我的middleware.py文件中,并将其添加到settings.py中:DOWNLOADER_MIDDLEWARES={'street.midd

python - Scrapy: 'str' 对象没有属性 'iter'

我向我的scrapy蜘蛛添加了restrict_xpaths规则,现在它立即失败并显示:2015-03-1615:46:53+0000[tsr]ERROR:SpidererrorprocessingTraceback(mostrecentcalllast):File"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/base.py",line800,inrunUntilCurrentcall.func(*call.args,**call.kw)File"

python - Scrapy:如何从 spider_idle 事件回调中手动插入请求?

我创建了一个蜘蛛,并将一个方法链接到spider_idle事件。如何手动添加请求?我不能只从解析中返回该项目——在这种情况下解析没有运行,因为所有已知的URL都已被解析。我有一个生成新请求的方法,我想从spider_idle回调中运行它以添加创建的请求。classFooSpider(BaseSpider):name='foo'def__init__(self):dispatcher.connect(self.dont_close_me,signals.spider_idle)defdont_close_me(self,spider):ifspider!=self:return#Thee

python - 如何使用 scrapy 捕获错误,以便在出现用户超时错误时执行某些操作?

ERROR:Errordownloading:Usertimeoutcausedconnectionfailure.我在使用我的抓取工具时不时遇到这个问题。有什么方法可以捕获这个问题并在它发生时运行一个函数吗?我无法在任何地方找到如何在线完成此操作。 最佳答案 你可以做的是定义一个errback在您的Request实例中:errback(callable)–afunctionthatwillbecalledifanyexceptionwasraisedwhileprocessingtherequest.Thisincludespag

python - Scrapy 从文件中读取 URL 列表以进行抓取?

我刚刚安装了scrapy并遵循了他们简单的dmoztutorial哪个有效。我只是查找了python的基本文件处理,并试图让爬虫从文件中读取URL列表,但出现了一些错误。这可能是错误的,但我试了一下。有人可以给我看一个将URL列表读入scrapy的例子吗?提前致谢。fromscrapy.spiderimportBaseSpiderclassDmozSpider(BaseSpider):name="dmoz"allowed_domains=["dmoz.org"]f=open("urls.txt")start_urls=fdefparse(self,response):filename=

python - 如何使用 scrapy 合约?

Scrapy合约问题我开始研究scrapy框架。也实现了一些蜘蛛提取,但我无法为蜘蛛编写单元测试用例,因为契约(Contract)scrapy提供的包文档没有正确的程序来编写测试用例。请帮我解决这个问题。 最佳答案 是的,SpidersContracts远非清晰和详细。我不是编写蜘蛛契约(Contract)的专家(实际上在web-scrapingtutorial上工作时只写过一次)。但是每当我需要为Scrapy蜘蛛编写测试时,我更喜欢遵循​​newcoder.io的方法——从本地html文件创建一个假的响应。这是否仍然是一个单元测试