前文傳送門(mén): 小白學(xué) Python 爬蟲(chóng)(1):開(kāi)篇 小白學(xué) Python 爬蟲(chóng)(2):前置準(zhǔn)備(一)基本類庫(kù)的安裝 小白學(xué) Python 爬蟲(chóng)(3):前置準(zhǔn)備(二)Linux基礎(chǔ)入門(mén) 小白學(xué) Python 爬蟲(chóng)(4):前置準(zhǔn)備(三)Docker基礎(chǔ)入門(mén) 小白學(xué) Python 爬蟲(chóng)(5):前置準(zhǔn)備(四)數(shù)據(jù)庫(kù)基礎(chǔ) 小白學(xué) Python 爬蟲(chóng)(6):前置準(zhǔn)備(五)爬蟲(chóng)框架的安裝 小白學(xué) Python 爬蟲(chóng)(7):HTTP 基礎(chǔ) 小白學(xué) Python 爬蟲(chóng)(8):網(wǎng)頁(yè)基礎(chǔ) 小白學(xué) Python 爬蟲(chóng)(9):爬蟲(chóng)基礎(chǔ) 小白學(xué) Python 爬蟲(chóng)(10):Session 和 Cookies 小白學(xué) Python 爬蟲(chóng)(11):urllib 基礎(chǔ)使用(一) 小白學(xué) Python 爬蟲(chóng)(12):urllib 基礎(chǔ)使用(二) 小白學(xué) Python 爬蟲(chóng)(13):urllib 基礎(chǔ)使用(三) 小白學(xué) Python 爬蟲(chóng)(14):urllib 基礎(chǔ)使用(四) 小白學(xué) Python 爬蟲(chóng)(15):urllib 基礎(chǔ)使用(五) 小白學(xué) Python 爬蟲(chóng)(16):urllib 實(shí)戰(zhàn)之爬取妹子圖 小白學(xué) Python 爬蟲(chóng)(17):Requests 基礎(chǔ)使用 小白學(xué) Python 爬蟲(chóng)(18):Requests 進(jìn)階操作 小白學(xué) Python 爬蟲(chóng)(19):Xpath 基操 小白學(xué) Python 爬蟲(chóng)(20):Xpath 進(jìn)階 小白學(xué) Python 爬蟲(chóng)(21):解析庫(kù) Beautiful Soup(上) 小白學(xué) Python 爬蟲(chóng)(22):解析庫(kù) Beautiful Soup(下) 小白學(xué) Python 爬蟲(chóng)(23):解析庫(kù) pyquery 入門(mén) 小白學(xué) Python 爬蟲(chóng)(24):2019 豆瓣電影排行 小白學(xué) Python 爬蟲(chóng)(25):爬取股票信息 小白學(xué) Python 爬蟲(chóng)(26):為啥買(mǎi)不起上海二手房你都買(mǎi)不起 小白學(xué) Python 爬蟲(chóng)(27):自動(dòng)化測(cè)試框架 Selenium 從入門(mén)到放棄(上) 小白學(xué) Python 爬蟲(chóng)(28):自動(dòng)化測(cè)試框架 Selenium 從入門(mén)到放棄(下) 小白學(xué) Python 爬蟲(chóng)(29):Selenium 獲取某大型電商網(wǎng)站商品信息 小白學(xué) Python 爬蟲(chóng)(30):代理基礎(chǔ) 小白學(xué) Python 爬蟲(chóng)(31):自己構(gòu)建一個(gè)簡(jiǎn)單的代理池 小白學(xué) Python 爬蟲(chóng)(32):異步請(qǐng)求庫(kù) AIOHTTP 基礎(chǔ)入門(mén) 引言首先恭喜看到這篇文章的各位同學(xué),從這篇文章開(kāi)始,整個(gè)小白學(xué) Python 爬蟲(chóng)系列進(jìn)入最后一部分,小編計(jì)劃是介紹一些常用的爬蟲(chóng)框架。 說(shuō)到爬蟲(chóng)框架,首先繞不過(guò)去的必然是 Scrapy 。 Scrapy 是一個(gè)基于 Twisted 的異步處理框架,是純 Python 實(shí)現(xiàn)的爬蟲(chóng)框架,其架構(gòu)清晰,模塊之間的耦合程度低,可擴(kuò)展性極強(qiáng),可以靈活完成各種需求。 當(dāng)然第一件事兒還是各種官方地址: Scrapy 官網(wǎng): https:/// Github:https://github.com/scrapy/scrapy 官方文檔:https:///doc/ 架構(gòu)概述首先看一下 Scrapy 框架的架構(gòu)體系圖: 從這張圖中,可以看到 Scrapy 分成了很多個(gè)組件,每個(gè)組件的含義如下:
上面這張圖的數(shù)據(jù)流程如下:
這張圖的名詞有些多,記不住實(shí)屬正常,不過(guò)沒(méi)關(guān)系,后續(xù)小編會(huì)配合著示例代碼,和各位同學(xué)一起慢慢的學(xué)習(xí)。 基礎(chǔ)示例先來(lái)個(gè)最簡(jiǎn)單的示例項(xiàng)目,在創(chuàng)建項(xiàng)目之前,請(qǐng)確定自己的環(huán)境已經(jīng)正確安裝了 Scrapy ,如果沒(méi)有安裝的同學(xué)可以看下前面的文章,其中有介紹 Scrapy 的安裝配置。 首先需要?jiǎng)?chuàng)建一個(gè) Scrapy 的項(xiàng)目,創(chuàng)建項(xiàng)目需要使用命令行,在命令行中輸入以下命令:
然后一個(gè)名為
到此,我們已經(jīng)成功創(chuàng)建了一個(gè) Scrapy 項(xiàng)目,但是這個(gè)項(xiàng)目目前是空的,我們需要再手動(dòng)添加一只 Spider 。 Scrapy 用它來(lái)從網(wǎng)頁(yè)里抓取內(nèi)容,并解析抓取的結(jié)果。不過(guò)這個(gè)類必須繼承 Scrapy 提供的 Spider 類 scrapy.Spider,還要定義 Spider 的名稱和起始請(qǐng)求,以及怎樣處理爬取后的結(jié)果的方法。 創(chuàng)建 Spider 可以使用手動(dòng)創(chuàng)建,也可以使用命令創(chuàng)建,小編這里演示一下如何使用命令來(lái)創(chuàng)建,如下:
將會(huì)看到在 spider 目錄下新增了一個(gè) QuotesSpider.py 的文件,里面的內(nèi)容如下:
可以看到,這個(gè)類里面有三個(gè)屬性
到這里我們就清楚了, 先看下網(wǎng)頁(yè)的 DOM 結(jié)構(gòu): 接下來(lái)要做的事情就比較簡(jiǎn)單了,獲取其中的數(shù)據(jù),然后將其打印出來(lái)。 數(shù)據(jù)提取的方式可以是 CSS 選擇器也可以是 XPath 選擇器,小編這里使用的是 CSS 選擇器,將我們剛才的
首先是獲取到所有的 class 為 quote 的元素,然后將所有元素進(jìn)行循環(huán)后取出其中的數(shù)據(jù),最后對(duì)這些數(shù)據(jù)進(jìn)行打印。 程序到這里就寫(xiě)完了,那么接下來(lái)的問(wèn)題是,我們?nèi)绾芜\(yùn)行這只爬蟲(chóng)? Scrapy 的運(yùn)行方式同樣適用適用命令行的,首先要到這個(gè)項(xiàng)目的根目錄下,然后執(zhí)行以下代碼:
結(jié)果如下: 可以看到,我們剛才 除了我們 示例代碼本系列的所有代碼小編都會(huì)放在代碼管理倉(cāng)庫(kù) Github 和 Gitee 上,方便大家取用。 參考https://docs./en/latest/intro/tutorial.html |
|
來(lái)自: 易禪浮屠 > 《小白學(xué)爬蟲(chóng)系列》