爬蟲技術(shù)(2) Scrapy框架的使用

Scrapy 官方文檔

1. 創(chuàng)建自定義爬蟲

scrapy startproject zhihurb

目錄結(jié)構(gòu)

scrapy.cfg: 項(xiàng)目的配置文件(很少用)
zhihurb/: 該項(xiàng)目的python模塊蹦魔。之后您將在此加入代碼。
zhihurb/items.py: 項(xiàng)目中的item文件.
zhihurb/pipelines.py: 項(xiàng)目中的pipelines文件.
zhihurb/settings.py: 項(xiàng)目的設(shè)置文件(設(shè)置)
zhihurb/spiders/: 放置spider代碼的目錄.

settings.py 常用配置:
LOG_LEVEL = 'ERROR'
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
ROBOTSTXT_OBEY = False 
DOWNLOAD_DELAY = 1  下載延時(shí)
DEFAULT_REQUEST_HEADERS = {} 重新請求頭

2. xpath 選擇器

可以在命令行輸入 scrapy shell [要測試的url地址]
response.xpath('//div[@class="tqtongji2"]/ul[position()>1]/li[1]/a/text()').extract() 進(jìn)行測試

extract()  
Serialize and return the matched nodes as a list of unicode strings. Percent encoded content is unquoted. 

extract_first()  
return the matched node.

re(regex)
Apply the given regex and return a list of unicode strings with the matches.
同樣有re_first()

獲取某節(jié)點(diǎn)所有文字內(nèi)容
node = response.xpath('//div[@class="content"]')[0]
article = node.xpath('string(.)').extract_first()

3. 中斷和恢復(fù)爬蟲

scrapy crawl article -s JOBDIR=crawls/article
中斷后缅刽,重新執(zhí)行該命令捡絮,從暫停地方繼續(xù)

4. 數(shù)據(jù)導(dǎo)出

數(shù)據(jù)導(dǎo)出
如果要簡單將已抓取的item數(shù)據(jù)保存到文件暖混,可以傳遞-o選項(xiàng):
scrapy crawl heartsong -o index.xml
格式包括 csv,json,xml

如果有復(fù)雜操作,在pipelines處理邏輯参淫, 注釋setting中的 ITEM_PIPELINES 配置項(xiàng)可以更換實(shí)現(xiàn)類救湖。

ITEM_PIPELINES = {
   'music163.pipelines.MongoPipeline': 300,
}

demo

from scrapy import Spider, Request
from zhihurb.items import ZhihurbItem
 
class ZhihuSpider(Spider):
    name = "zhihu"
    allowed_domains = ["zhihu.com"]
    start_urls = ['https://daily.zhihu.com/']

    def parse(self, response):
        urls = response.xpath('//div[@class="box"]/a/@href').extract()
        for url in urls:
            url = response.urljoin(url)
            print(url)
            yield Request(url, callback=self.parse_url)

    def parse_url(self, response):
        # name = xxxx
        # article = xxxx
        # 保存
        name = response.xpath('//h1[@class="headline-title"]/text()').extract_first()
        node = response.xpath('//div[@class="content"]')[0]
        article = node.xpath('string(.)').extract_first()
        item = ZhihurbItem()
        item['name'] = name
        item['article'] = article
     
        # 返回item
        yield item
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涎才,隨后出現(xiàn)的幾起案子鞋既,更是在濱河造成了極大的恐慌,老刑警劉巖耍铜,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑闺,死亡現(xiàn)場離奇詭異,居然都是意外死亡棕兼,警方通過查閱死者的電腦和手機(jī)陡舅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伴挚,“玉大人靶衍,你說我怎么就攤上這事≌吕穑” “怎么了摊灭?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵咆贬,是天一觀的道長败徊。 經(jīng)常有香客問我,道長掏缎,這世上最難降的妖魔是什么皱蹦? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮眷蜈,結(jié)果婚禮上沪哺,老公的妹妹穿的比我還像新娘。我一直安慰自己酌儒,他們只是感情好辜妓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忌怎,像睡著了一般籍滴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上榴啸,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天孽惰,我揣著相機(jī)與錄音,去河邊找鬼鸥印。 笑死勋功,一個(gè)胖子當(dāng)著我的面吹牛坦报,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狂鞋,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼片择,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骚揍?” 一聲冷哼從身側(cè)響起构回,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疏咐,沒想到半個(gè)月后纤掸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浑塞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年借跪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酌壕。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掏愁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卵牍,到底是詐尸還是另有隱情果港,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布糊昙,位于F島的核電站辛掠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏释牺。R本人自食惡果不足惜萝衩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望没咙。 院中可真熱鬧猩谊,春花似錦、人聲如沸祭刚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡驮。三九已至暗甥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遮怜,已是汗流浹背淋袖。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锯梁,地道東北人即碗。 一個(gè)月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓焰情,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剥懒。 傳聞我的和親對象是個(gè)殘疾皇子内舟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容