Scrapy爬蟲框架初試探(一)

安裝Scrapy,pip install Scrapy。因?yàn)橹鞍惭b的各種坑都遇到了蟹略,這里安裝不會(huì)再出錯(cuò)了

創(chuàng)建爬蟲項(xiàng)目

在DOS界面中用CD命令切換到存儲(chǔ)位置


存儲(chǔ)位置

然后運(yùn)行命令:scrapy startproject csdnSpider ,回車


建立項(xiàng)目

可以創(chuàng)建項(xiàng)目csdnSpider捧存,csdnSpider文件夾下有如下文件
csdnSpider文件夾

簡(jiǎn)單介紹一下文件功能

scrapy.cfg 項(xiàng)目部署文件
csdnSpider/:
csdnSpider/:items.py  這里主要是做爬蟲提取字段
csdnSpider/:pipelines.py  對(duì)爬蟲字段的進(jìn)一步處理,如去重洒敏,清洗,入庫(kù)
csdnSpider/:settings.py 項(xiàng)目的配置文件
csdnSpider/:spiders.py 這里主要做爬蟲操作

創(chuàng)建爬取模塊

爬蟲模塊的代碼都放置于spiders文件夾中疙驾,用于從單個(gè)或多個(gè)網(wǎng)站爬取數(shù)據(jù)的類凶伙,其應(yīng)該包含初始頁(yè)面的URL,以及跟進(jìn)網(wǎng)頁(yè)的鏈接它碎,分析頁(yè)內(nèi)容是提取數(shù)據(jù)的函數(shù)函荣,創(chuàng)建一個(gè)Spider類,需要繼承scrapy.Spider類扳肛,并且定義三個(gè)屬性:

name:用于區(qū)別Spider,必須是唯一的
start_urls:啟動(dòng)時(shí)爬取入口的URL列表傻挂,后續(xù)的URL響應(yīng)后返回的Response對(duì)象
parse():會(huì)作為唯一的參數(shù)傳遞給該方法,該方法負(fù)責(zé)解析返回的數(shù)據(jù)(reponse data),提取數(shù)據(jù)(生成item)以及生成需要進(jìn)一步處理的URL的Response對(duì)象

用Pycharm打開我們剛創(chuàng)建的csdnsoider項(xiàng)目,編寫爬蟲模塊代碼:

import scrapy

class csdnspider(scrapy.Spider): # 必須繼承scrapy.Spider
    name = "csdn" #爬蟲名稱,這個(gè)名稱必須是唯一的
    allowed_domains=["csdn.net"] #允許的域名
    start_urls = [
        "https://www.csdn.net/nav/ai"
    ]

    def parse(self, response):
        # 實(shí)現(xiàn)網(wǎng)頁(yè)的解析
     pass

然后調(diào)用挖息,在命令行中進(jìn)入目錄csdnSpider中金拒,注意這里應(yīng)該是于scrapy.cfg同級(jí),運(yùn)行命令:scrapy crawl csdn 其中csdn是我們剛才在爬蟲模塊定義的name,爬蟲文件建立在spiders文件夾下
效果圖:


1
2

這樣就創(chuàng)建成功了

解析Html字段(提取爬蟲字段)

之前的xpath與css已經(jīng)講過(guò)套腹,這里說(shuō)一下Selector用法绪抛,Selector對(duì)象有四個(gè)基本方法:

1、xpath(queery) 返回表達(dá)式所對(duì)應(yīng)的所有人節(jié)點(diǎn)的selector list列表电禀。
2幢码、css(query)返回表達(dá)式所對(duì)應(yīng)的所有人節(jié)點(diǎn)的selector list列表。
3尖飞、extract()序列化節(jié)點(diǎn)為UNicode字符串并返回列表症副。
4、re(regex)根據(jù)傳入的正則表達(dá)式對(duì)數(shù)據(jù)進(jìn)行提取政基,返回一個(gè)Unicode字符串列表贞铣。

在csdnspider類的parse()方法中,其中一個(gè)參數(shù)是reponse,將reponse傳入的Selector(reponse)中就可以構(gòu)造出一個(gè)Selector對(duì)象沮明。

小技巧:我們?cè)谂老x的時(shí)候咕娄,更多的是對(duì)爬取字段的表達(dá)式構(gòu)造。Scrapy提供了一種簡(jiǎn)便的方式來(lái)查看表達(dá)式是否正確有效珊擂。

新打開一個(gè)命令窗口:輸入E:\work\my_python\csdnSpider>scrapy shell"https://www.csdn.net/nav/ai"
效果圖:

提取爬取字段

接著直接輸入:response.xpath('//*[@id="feedlist_id"]/li[1]/div/div[1]/h2/a/text()').extract()
效果圖:


字段

爬取字段代碼

import scrapy

class csdnspiderpage(scrapy.Spider):
    name = "csdn"
    allowed = ["csdn.net"]
    start_urls = [
      'https://www.csdn.net/nav/ai'
    ]

    def parse(self, response):
        datas = response.xpath('//*[@id="feedlist_id"]/li/div')
        for data in datas:
            read_count = data.xpath('./div[1]/h2/a/text()').extract()
            read_count = read_count[0] if len(read_count) > 0 else ''
            print(read_count.strip())


        pass

在終端輸入
scrapy crawl csdn
報(bào)錯(cuò)”No module named 'win32api'“
解決辦法圣勒,Dos
pip install pypiwin32
pycharm 安裝pypiwin32庫(kù)
運(yùn)行效果


爬取字段

總結(jié)

scrapy 框架非常強(qiáng)大费变,初步接觸感覺到了他的便利和效率。今天學(xué)習(xí)的過(guò)程也是在磕磕碰碰圣贸,從寒大的寫錯(cuò)命令開始挚歧,到我不知道在哪里建立spider。如何執(zhí)行spider遇到了種種問(wèn)題吁峻。
在打開終端的時(shí)候打開的位置上默認(rèn)開啟的項(xiàng)目滑负,cd起來(lái)其實(shí)挺麻煩的,這里我們就修改一下用含,每次手動(dòng)打開項(xiàng)目矮慕。這里可以修改一下設(shè)置:
File -> setting -> Appearance&Behavior -> System Setting -> Startup/Shutdown
取消 Reopen last project on startup 這個(gè)選項(xiàng)就好了


修改開啟設(shè)置

這樣終端打開為當(dāng)前項(xiàng)目位置


終端
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啄骇,隨后出現(xiàn)的幾起案子痴鳄,更是在濱河造成了極大的恐慌,老刑警劉巖缸夹,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痪寻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡虽惭,警方通過(guò)查閱死者的電腦和手機(jī)橡类,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芽唇,“玉大人顾画,你說(shuō)我怎么就攤上這事〈殷裕” “怎么了研侣?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)疚膊。 經(jīng)常有香客問(wèn)我义辕,道長(zhǎng)虾标,這世上最難降的妖魔是什么寓盗? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮璧函,結(jié)果婚禮上傀蚌,老公的妹妹穿的比我還像新娘。我一直安慰自己蘸吓,他們只是感情好善炫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著库继,像睡著了一般箩艺。 火紅的嫁衣襯著肌膚如雪窜醉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天艺谆,我揣著相機(jī)與錄音榨惰,去河邊找鬼。 笑死静汤,一個(gè)胖子當(dāng)著我的面吹牛琅催,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虫给,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼藤抡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了抹估?” 一聲冷哼從身側(cè)響起缠黍,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棋蚌,沒想到半個(gè)月后嫁佳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谷暮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年蒿往,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湿弦。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓤漏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颊埃,到底是詐尸還是另有隱情蔬充,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布班利,位于F島的核電站饥漫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏罗标。R本人自食惡果不足惜庸队,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闯割。 院中可真熱鬧彻消,春花似錦、人聲如沸宙拉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谢澈。三九已至煌贴,卻和暖如春御板,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牛郑。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工稳吮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人井濒。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓灶似,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瑞你。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酪惭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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