解析单个URL而不进行爬网

时间:2016-02-09 10:31:22

标签: python scrapy

我正试图用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

1 个答案:

答案 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