我正试图用sc sc刮掉一个网址。我不希望它爬行,只需解析项目,运行管道并返回。我的管道只是更新数据库。下面的代码就是我到目前为止所做的并且需要大约3秒钟,但似乎大部分时间都是花费加载scrapy。如果还有更好的方法吗?
理想情况下,我想从python脚本解析单个url而不是命令行。
def __init__(self, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.start_urls = [kwargs.get('start_url')]
def parse(self, response):
if 'item.asp' in response.url:
yield Request(response.url, callback=self.parse_item)
然后我从命令行运行,如下所示
time scrapy crawl --loglevel=DEBUG MySpider -a start_url="www.example.com"
我也尝试了以下但从未使用过管道参数。
time scrape parse "www.example.com" --spider=MySpider --callback parse_item --pipelines AddToDB
答案 0 :(得分:0)
查看scrapy parse
http://doc.scrapy.org/en/latest/topics/commands.html?highlight=parse#std:command-parse的文档
在您的情况下,您误解了--pipelines
参数。它可以启用settings.py
所以只运行AddToDB
。
如果要禁用某些管道,可能会非常棘手,您可能只想拥有蜘蛛的子项,添加类属性custom_settings
并限制其中的管道。
所以在你的情况下,如:
class MySpider2(MySpider):
name = 'spider2'
custom_settings = {'ITEM_PIPELINES': 'project.pipelines.AddToDB'}
然后使用scrapy parse 'http://example.com' --spider=spider2 --pipelines
。