使用爬虫参数

你可以使用你的爬虫提供命令行参数,当爬虫运行时通过使用-a选项:

    $  scrapy crawl quotes -o quotes-humor.json -a tag=humor

这些参数将会传递给爬虫的__init__方法同时默认设定为爬虫的属性,在此例子中,传递给tag的参数将会传递给self.tag(实例中的tag)。你可以使用此方法使你的爬虫只爬取指定的标签,基于参数构建的URL中。

    import scrapy

    class QuotesSpider(scrapy.Spider):
        name = "quotes"

        def start_requests(self):
            url = 'http://quotes.toscrapy.com/'
            tag = a.getarrt(self,'tag',None)
            if tag is not None:
               url = url + 'tag/' + tag
            yield scrapy.Request(url,self.parse)

        def parse(self, response):
            for quote in response.css('div.quote'):
                yield{
                    'text':quote.css('span.text::text').extract_first(),
                    'author':quote.css('small.author::text').extract_first(),
               }

            next_page = response.css('li.next a::attr(href)').extract_first()
            if next_page is not None:
               yield response.follow(next_page, self.parse)

如果你向爬虫传递tag=humor参数,你将会发现爬虫只访问URLs中的humor标签,比如说是http://quotes.toscrapy.com/tag/humor

你可以在这里学习更多关于爬虫参数设置的内容(P35)。

下一步

此教程仅仅讲了一些Scrapy的基础,同时还有许多其他的功能特性还未提到。访问在Scarpy at glance中的更多内容(P7)来浏览概述更重要的部分。

你可以继续从章节基础概念来学习更多关于命令行工具、爬虫、选择器和其他在此教程中没有提到的像是建立爬虫数据结构模型。如果你更喜欢从例子中学习的话,请访问例子(21)章节。

例子

最好的学习方法是举例子,对于Scrapy的学习也不例外。由于这样我们提供一个名为quotesbot额项目例子来让你操作和学习关于Scrapy更多的内容。为爬取http://quotes.toscrape.com,它包括了两只爬虫,一只使用CSS选择器,另一只使用Xpath表达式。

qutoesbot项目在http://github.com/scrapy/quotesbot中,你可以在README*了解其基本内容。

如果熟悉git语法的话你可以检出代码。否则你可以下载其压缩文件

  • Scrapy at glance 理解ScrapyScrapy如何帮助你爬取网页内容
  • Installation guideScrapy下载到你的计算机中
  • Scrapy Tutorial 编写你的第一个爬虫项目
  • ExampleScrapy成品项目中学习操作

推荐阅读更多精彩内容