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