Scrapy爬蟲框架入門教程(1)——爬取廖雪峰老師的博客

最近一直在學習scrapy,但是網上關於scrapy的教程實在是太少,能找到的教程大多都是基於py2.7/scrapy0.2以下,甚至很多教程都是互相抄襲,連代碼都抄漏了好多,更別提各種縮進錯誤、變數名錯誤、導入錯誤了等等。趁著最近正在擼scrapy的官方教程,想著做幾個小爬蟲促進一下學習、加深印象,就寫下了這篇不算教程的「教程」。我也深知,知乎上大牛太多了,所以懇請各位能多多指教!

在你看這個教程的時候,默認你已經基本掌握了python3的語法,不求會寫,但是至少你能看懂。為了蹭個熱度,特意選了python圈裡非常著名的廖雪峰老師的博客作為爬蟲對象。廖老師,你博客每天的訪問量那麼高,也不差讓我們這些萌新練練爬蟲了吧。

運行環境:

window10 x64系統

python3.6

pycharm

anaconda

scrapy

安裝好以上環境、包之後,打開cmd,輸入scrapy startproject liaoxuefeng,出現以下提示後,就說明你已經成功創建一個scrapy的新項目:

在該項目的根目錄下,文件夾形式如下:

liaoxuefeng/n scrapy.cfgn liaoxuefeng/n __init__.pyn items.pyn pipelines.pyn settings.pyn spiders/n __init__.pyn ...n

開始編寫爬蟲的第一個代碼!打開liaoxuefeng/liaoxuefeng/spiders,創建一個新文件liaoxuefeng.py,寫入如下代碼:

import scrapynnnclass LiaoxuefengSpider(scrapy.Spider):n # 這裡是將爬蟲定義為scrapy.Spider這個類下的一個實例。n # Spider這個類定義了爬蟲的很多基本功能,我們直接實例化就好,n # 省卻了很多重寫方法的麻煩。n name = lxfn #這是爬蟲的名字,這個非常重要。n start_urls = [http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000]n #這是爬蟲開始幹活的地址,必須是一個可迭代對象。nn def parse(self, response):n #爬蟲收到上面的地址後,就會發送requests請求,在收到伺服器返回的內容後,就將內容傳遞給parse函數。在這裡我們重寫函數,達到我們想要的功能。n titles = response.xpath("//ul[@class=uk-nav uk-nav-side]//a/text()").extract()n #這是廖雪峰老師python教程的標題列表。我們利用xpath解析器對收到的response進行分析,從而提取出我們需要的數據。//XXX表示任何任何目錄下的XXX區塊,/XXX表示子目錄下的XXX區塊,XXX[@class=abc]表示帶有class=abc屬性值的XXX區塊,/text()表示獲取該區塊的文本。最後加上.extract()表示將內容提取出來。n for title in titles:n print (title)n #這個沒什麼說的了,直接遍歷,然後列印標題。n

然後進入cmd,在項目的根目錄下運行scrapy crawl lxf(這個lxf就是剛才liaoxuefeng.py文件中的name欄位,千萬不要弄錯了),運行成功,將列印當頁所有的目錄名稱:

最簡單的爬蟲就寫到這裡。也許你有地方沒看懂,也許我講的不夠詳細,歡迎留言提問、建議,更歡迎高手指教!

我的全部文章:

Scrapy爬蟲框架入門教程(1)——爬取廖雪峰老師的博客

用python寫爬蟲,爬取清純妹子網站(requests/lxml)

Python入門——針對零基礎學習者的資料推薦

歡迎加QQ群:613081176,純技術交流,杜絕廣告、刷屏、機器人

點個贊再收藏呀,親!現在點贊1000+,收藏突破2000+,真有點無語哎!

歡迎關注微信訂閱號:python程序員之路

介紹python最新的功能、模塊,詳解實用代碼。主要針對python的初級和中級愛好者。更新頻率不會太高,絕不推送廣告。有我在,成長的路上不會孤單!

想轉載的話請聯繫作者,謝謝!


推薦閱讀:

開啟知乎收藏夾看圖模式
從零開始寫Python爬蟲 --- 爬蟲應用:今天吃什麼?
4行Python代碼獲取所在城市天氣預報

TAG:Python | scrapy | 爬虫 |