你可以使用你的爬蟲提供命令行參數(shù),當爬蟲運行時通過使用-a選項:
$ scrapy crawl quotes -o quotes-humor.json -a tag=humor
這些參數(shù)將會傳遞給爬蟲的__init__方法同時默認設定為爬蟲的屬性,在此例子中,傳遞給tag的參數(shù)將會傳遞給self.tag(實例中的tag)。你可以使用此方法使你的爬蟲只爬取指定的標簽,基于參數(shù)構建的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參數(shù),你將會發(fā)現(xiàn)爬蟲只訪問URLs中的humor標簽,比如說是http://quotes.toscrapy.com/tag/humor。
你可以在這里學習更多關于爬蟲參數(shù)設置的內容(P35)。
下一步
此教程僅僅講了一些Scrapy的基礎,同時還有許多其他的功能特性還未提到。訪問在Scarpy at glance中的更多內容(P7)來瀏覽概述更重要的部分。
你可以繼續(xù)從章節(jié)基礎概念來學習更多關于命令行工具、爬蟲、選擇器和其他在此教程中沒有提到的像是建立爬蟲數(shù)據(jù)結構模型。如果你更喜歡從例子中學習的話,請訪問例子(21)章節(jié)。
例子
最好的學習方法是舉例子,對于Scrapy的學習也不例外。由于這樣我們提供一個名為quotesbot額項目例子來讓你操作和學習關于Scrapy更多的內容。為爬取http://quotes.toscrape.com,它包括了兩只爬蟲,一只使用CSS選擇器,另一只使用Xpath表達式。
qutoesbot項目在http://github.com/scrapy/quotesbot中,你可以在README*了解其基本內容。
如果熟悉git語法的話你可以檢出代碼。否則你可以下載其壓縮文件。
- Scrapy at glance 理解Scrapy和Scrapy如何幫助你爬取網(wǎng)頁內容
- Installation guide 將Scrapy下載到你的計算機中
- Scrapy Tutorial 編寫你的第一個爬蟲項目
- Example 從Scrapy成品項目中學習操作