Python爬蟲入門指導

weixin_33782386發表於2017-05-16

最近很多同學在學習爬蟲過程中遇到很多障礙,我總結了一些原因,大多有以下幾點:
1、http請求協議不清楚。這裡還是強推阮一峰大神的HTTP 協議入門
2、HTML不熟悉,如果想學習爬蟲,基本的HTML知識是必不可少的。這裡推薦使用w3school的html教程,不要求學的特別深,但至少能夠看的懂標籤語言,知道屬性、定位等概念。
3、python基本語法不紮實。廖雪峰python3教程

現在結合另一位學長的總結,給出一份簡單且快速的入門指導。

簡單爬蟲的實現

首先我先來說一下使用python設計一個簡單爬蟲的流程:
1、請求函式(requests、urllib),分析網站的請求方式,決定使用那種方法。
2、html解析函式(beautifulsoup、pyquery、json、re),分析獲得的html,發現資料或者文字分佈規律,選擇適合的解析方法進行解析
3、資料儲存函式(xlwt、peewee)

括號內也寫入了一些爬蟲常用的、基本的包
1、requests、urllib是兩種不同的請求包,個人認為requests要比urllib好用。
2、beautifulsoup和pyquery是針對html的解析包,如果有jquery經驗的同學請考慮使用pyquery。json主要針對返回json資料的網站解析、re則是正規表示式,當上面幾種包都無法解析一個html的時候,則會用到,當然,對於某些特定結構的網站來說,使用re要比使用beautifulsoup或者pyquery要方便的多。
3、xlwt是microsoft excel的寫入包,可以將資料一邊抓取一邊寫入excel中。peewee則是一種orm框架,能夠非常方便的運算元據庫(sqlite、Mysql、PostgreSQL等),除了peewee外,還有sqlite3、pymysql等包能夠讓python直接對資料庫進行操作。當然,最簡單的儲存資料的方法就是使用with open寫入txt,但是當要求開發增量式爬蟲以及去重的話,資料儲存在txt則需要返工。
上面這些包用法以及爬蟲的入門都可以在崔慶才老師的個人部落格內找到,寫得非常細緻,但是使用的是python2,和python3有區別,所以不要盲目照搬程式碼。

如果你掌握了requests、beautifulsoup(或者pyquery)這兩種包,那麼恭喜你,你已經可以完成一個簡單的爬蟲了,對於急於上手、證明自己的你,個人推薦去抓取國家社科基金專案資料庫(網址百度去吧,我放到這裡擔心被國家哲學辦公室的人打,練手的話簡單爬個兩三頁資料就好),這是我個人第一個抓取的網站。同樣後面對多程式或者對多執行緒爬蟲網站感興趣的話,可以使用這個網站來實驗。

進階

如果對http協議掌握比較的話,已經可以進階對比較複雜的網站進行抓取了,這裡試試民國時期文獻資料庫(怕你們百度不到),這裡就需要你們學會構造headers、values等再傳送請求。

5829213-77a18caa3cb159e8
這裡寫圖片描述

可以發現這個請求是不是非常複雜?別擔心,這些都是使用火狐瀏覽器外掛httpfox抓包得到的,你要做的就是分析每一次請求抓到的包,找到規律,然後修改並構造。httpfox可以自行百度然後在火狐瀏覽器上安裝。

完成了這個網站,基本可以上手新浪微博了,瀏覽器輸入s.weibo.com。在檢索欄裡輸入自己感興趣的內容,進行挖掘。再難點,可以點選高階檢索,輸入時間範圍等其他約束,再進行挖掘。

更高階的

1、微博爬蟲:新浪微博小爬蟲
2、加入JS實現動態載入:Python高階爬蟲之動態載入頁面的解決方案與爬蟲代理
3、ip代理:Python爬蟲技巧之設定代理IP
4、多程式:Python多程式multiprocessing使用示例
5、 Selenium&WebDriver:和我一起學 Selenium WebDriver(1)——入門篇
6、PhantomJS:python爬蟲的最佳實踐(五)--selenium+PhantomJS的簡單使
此部分涉及另一位學長的編寫內容,讓他寫個部落格發表死活不願意,沒法轉載只能複製到這

後期

對爬蟲開發很熟悉的話,建議可以加上Redis:python redis的安裝與使用

相關文章