你可以使用你的爬虫提供命令行参数,当爬虫运行时通过使用-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 理解Scrapy和Scrapy如何帮助你爬取网页内容
- Installation guide 将Scrapy下载到你的计算机中
- Scrapy Tutorial 编写你的第一个爬虫项目
- Example 从Scrapy成品项目中学习操作
网友评论