我无法更改分析方法中的爬行器设置。但这肯定是一种方式。
例如:
class SomeSpider(BaseSpider): name = 'mySpider' allowed_domains = ['example.com'] start_urls = ['http://example.com'] settings.overrides['ITEM_PIPELINES'] = ['myproject.pipelines.FirstPipeline'] print settings['ITEM_PIPELINES'][0] #printed 'myproject.pipelines.FirstPipeline' def parse(self, response): #...some code settings.overrides['ITEM_PIPELINES'] = ['myproject.pipelines.SecondPipeline'] print settings['ITEM_PIPELINES'][0] # printed 'myproject.pipelines.SecondPipeline' item = Myitem() item['mame'] = 'Name for SecondPipeline'
但是项目将由FirstPipeline处理。新项目参数不工作。开始爬网后如何更改设置?提前谢谢!
基于这个信息丰富的问题#4196,结合telnet控制台,即使在执行后也可以做到这一点。
将telnet客户端连接到端口(例如1234
)
$ telnet 127.0.0.1 6023 # Read the actual port from logs.
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Username: scrapy
Password: <copy-from-logs>
>>> engine.downloader.total_concurrency
8
>>> engine.downloader.total_concurrency = 32
>>> est()
Execution engine status
time()-engine.start_time : 14226.62803554535
engine.has_capacity() : False
len(engine.downloader.active) : 28
engine.scraper.is_idle() : False
engine.spider.name : <foo>
engine.spider_is_idle(engine.spider) : False
engine.slot.closing : False
len(engine.slot.inprogress) : 32
len(engine.slot.scheduler.dqs or []) : 531
len(engine.slot.scheduler.mqs) : 0
len(engine.scraper.slot.queue) : 0
len(engine.scraper.slot.active) : 0
engine.scraper.slot.active_size : 0
engine.scraper.slot.itemproc_size : 0
engine.scraper.slot.needs_backout() : False
如果您希望不同的蜘蛛有不同的管道,您可以为蜘蛛设置管道列表属性,该属性定义了该蜘蛛的管道。比在管道中检查存在:
class MyPipeline(object):
def process_item(self, item, spider):
if self.__class__.__name__ not in getattr(spider, 'pipelines',[]):
return item
...
return item
class MySpider(CrawlSpider):
pipelines = set([
'MyPipeline',
'MyPipeline3',
])
如果希望通过不同的管道处理不同的项目,可以执行以下操作:
class MyPipeline2(object):
def process_item(self, item, spider):
if isinstance(item, MyItem):
...
return item
return item
我试着在一个. asp网站上运行一个蜘蛛,它需要登录授权和一些爬行到同一个网站内的不同页面。我昨天成功地使用我的蜘蛛登录,并正在用不同的功能抓取数据,当我在更改了as功能后再次运行蜘蛛时,蜘蛛停止了工作。我不知道发生了什么,我对网络抓取相当陌生。下面是代码: 以下是日志: 代码曾经能够尝试从页面中抓取一些我想要的数据,但没有成功,但我相信这只是因为我使用了错误的css选择器。现在它只是打开和关闭而
我在这里和其他网站上读了很多关于scrapy的文章,但我无法解决这个问题,所以我问你:P希望有人能帮助我。 我想在主客户端页面中验证登录名,然后解析所有类别和所有产品,并保存产品的标题、类别、数量和价格。 我的代码: 当我在终端上运行scrapy爬行蜘蛛时,我得到以下信息: 刮痒的)pi@raspberry:~/SCRAPY/combatzone/combatzone/spiders$SCRAPY
我正试着测试这只痒痒的爬行蜘蛛,但我不明白它为什么不爬行。它应该做的是在wikipedia的数学页面上爬行一个深度级别,然后返回每个爬行页面的标题。我错过了什么?非常感谢您的帮助! 设置: 日志:
我试图刮一个网站,并保存信息,我目前有两个问题。 首先,当我使用硒点击按钮(在这种情况下是加载更多结果按钮)时,它直到最后才点击,我似乎不知道为什么。 另一个问题是它没有保存到parse_article函数中的csv文件中。 以下是我的代码:
我的查询是针对
简介 渗透测试可以通过多种途径完成,例如黑盒、灰盒和白盒。黑盒测试在测试者没有任何应用的前置信息条件下执行,除了服务器的 URL。白盒测试在测试者拥有目标的全部信息的条件下执行,例如它的构造、软件版本、测试用户、开发信息,以及其它。灰盒测试是黑盒和白盒的混合。 对于黑盒和灰盒测试,侦查阶段对测试者非常必然,以便发现白盒测试中通常由应用所有者提供的信息。 我们打算采取黑盒测试方式,因为它涉及到外部攻