1
很多學習 python 的同學應該都聽說過“網絡爬蟲”的概念,也可能聽說過用 python 寫網絡爬蟲很方便。
那麼什麼是爬蟲?百度百科上是這麼定義的:
網絡爬蟲(又稱爲網頁蜘蛛,網絡機器人),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。
一般來說,日常可能會用到的爬蟲場景有:
從網頁圖庫裏批量下載圖片
採集企業/產品名錄
收集某部電影下的評價
獲取某個球星的比賽數據
……
可以看出,爬蟲能替人去解決重複、繁瑣的網上數據/資源下載任務。除了這種“一次性”下載的事情,爬蟲也可以長期監控某個數據源,比如:
記錄某商品的每日價格變動
定時檢查某商品有沒有到貨
統計平臺作者的粉絲數量變化
監控熱搜榜
……
此外,還有一些模擬網絡請求的操作,雖然不算“爬蟲”,但所用的技術是類似的,比如:
自動簽到打卡
一鍵發帖機
網頁自動回覆機器人
……
2
隨着大家逐漸認識到“大數據”的重要性,爬蟲也是越來越多的被應用到商業之中,學習爬蟲、使用爬蟲的人越來越多。但某些人對爬蟲的濫用也給數據的所有者帶來了不少麻煩,一方面,商業數據牽涉到版權、知識產權、商業機密等敏感信息,爬蟲經常成爲侵權的工具;另一方面,無節制的爬蟲請求造成網站的負載激增,甚至影響到正常用戶的使用。因此,現在稍微有一定規模的網站,都會對爬蟲做不同程度的“反爬”限制,甚至會通過法律途徑制止侵權的爬蟲行爲。
這些限制本身沒什麼不好,但對於爬蟲學習來說,卻無形中提高了學習的門檻。
以前,我們會整理一些簡單、“友好”的網站講解爬蟲的基本操作和技巧,比如:
從DB網的接口抓取電影信息
從JD網抓圖片
從QS百科抓段子
從WY雲抓歌詞
從ZL抓招聘崗位
……
但如今,這些案例沒一個是輕輕鬆鬆就能搞定的,什麼 header、cookie、key、ajax……沒一定的經驗是很難上手的。
而且,就算你看明白了一個教程,但只要目標網站一個小更新,原來的示例代碼就又失效了,你又只能對着無法成功運行的代碼陷入自我懷疑。
3
我們編程教室一直有在做爬蟲相關的案例和教程。正因爲目睹了太多初學者的困擾,我們決定搞一個“靶子”項目!
在這個項目裏,我們做了 11 個任務,每個任務都是一組可以被抓取的接口或網頁,難度由低到高:
第一關:抓取 API
第二關:批量下載圖片
第三關:抓取文章列表頁
第四關:抓取文章詳細頁
第五關:AJAX 異步數據獲取
第六關:限制頻率、添加 headers 抓取
第七關:登錄後抓取
第八關:模擬 post 請求
第九關:數字圖片
第十關:前端加密
第十一關:換 ip 抓取
前面的關卡是對爬蟲基本技術的練習,可以避免真實網站的“反爬”對初學者的干擾;而在後面的關卡中,我們增加了一些常見“反爬”限制,讓學習者逐步接受“現實的毒打”。
這個項目就好比武俠小說中少林寺的“木人巷”,你把這一系列任務通關了,之後行走江湖才更加遊刃有餘。
我自己給這個項目取名爲“Purple Mountain”,也就是“紫金山”。因爲在我的家鄉有一座紫金山,每天都有很多人去“爬”,也不收門票,白爬!我覺得用來形容這個項目很形象????
項目代碼及文檔的下載方法見文末說明。
4
這個項目要怎麼用?
你需要準備 3 樣東西:
python 3(建議 3.5 以上)
django 2.1.5
django-tinymce4-lite 1.7.5
django 和 django-tinymce4-lite 可以通過 pip 安裝,安裝時指定版本:
pip install Django==2.1.5
pip install django-tinymce4-lite==1.7.5
如果你的電腦上已有其他版本的 django,建議新建一個虛擬環境來安裝。
準備完之後,下載項目,然後在項目目錄裏執行:
python manage.py runserver
運行項目,如果看到類似下圖的界面,說明項目運行成功:
項目運行成功後,在瀏覽器中打開網址:
http://127.0.0.1:8000/
看到如下圖的網頁,就可以按照關卡任務,開始爬蟲抓取練習:
你要抓取的網站名就是 127.0.0.1:8000。
5
我們的“碼上行動”課程中,也包含了爬蟲相關的教程和學習小組。另外,我們還會向付費學員提供線上版本的“紫金山”供練習使用,省得自己安裝運行,隨時隨地可抓。
最新一期爬蟲學習小組即將在本週日(7月5日)開始第一次任務,如果你有這方面的需求,可以在今天推送的第二篇文章裏瞭解詳情,或在公衆號裏回覆關鍵字 666 瞭解我們的“碼上行動”教學服務。
特別說明:爬蟲小組只是碼上行動課程中的一小部分,整個教學覆蓋 python 入門基礎及多個進階方向,完全沒接觸過編程的零基礎新手也可以從入門開始循序漸進地跟着我們學習。
“紫金山”爬蟲練習項目已上傳,獲取請在本公衆號(Crossin的編程教室)後臺回覆關鍵字 紫金山
往期推薦