以前爬蟲用urllib2來實現,也用過scrapy的爬蟲框架,這次試試requests,剛開始用,用起來確實比urllib2好,封裝的更好一些,使用起來簡單方便很多。
安裝requests庫
最簡便的方法就是使用pip來安裝:pip install requests;如果需要安裝特定版本,則在后面加上版本號即可:pip install requests == 1.9.7,這樣就搞定了。
快速上手的小例子
下面說一個最簡單的例子:

第一行,引入requests庫,這是必然的。
第二行,通過get方法獲取百度首頁的內容。
第三行,把返回的response內容,輸出出來。
果然很簡單,這樣就可以發送一個get請求,同理,也可以使用requests.post,requests.put,requests.options,requests.head,發送請求。
模擬登錄csdn
我們需要其他的輔助工具
瀏覽器:Firefox
瀏覽器插件:tamper data,firebug
我們需要tamper data來攔截請求,因為chrome沒有這個功能的插件,所以這個只能使用firefox來做(除了攔截請求chrome沒有,其他的工作都可以使用chrome)。
分析登錄過程
1.打開登錄頁面
我們首先打開csdn的登錄頁面:https://passport.csdn.net/account/login?ref=toolbar,這個鏈接,前面的部分是登錄的網址,問號后面的參數,referer,就是你從哪里跳過來的,也許是一個頁面跳轉到登錄的,toolbar就是我自己點擊頂部導航欄,然后跳轉到登錄頁面的。
2.清除相關的cookie
為了清除不必要的干擾,我們先清除掉所有的相關的cookie,這樣方便我們分析哪些參數是必須的。

3.登錄過程分析
清除了cookie后,我們刷新一下頁面,https://passport.csdn.net/account/login?ref=toolbar,重新獲取對應的cookie。
然后我們就開始用tamper data來攔截請求。

我們點擊start tamper ,在網頁中填寫用戶名和密碼,點擊“登錄”,會發出一個請求,然后tamper data 會攔截下這個請求,詢問我們是否攔截,點擊tamper,我們可以在這個請求提交之前,查看請求的內容,還可以做刪除。

發送一個登錄表單過去,就登錄成功了。
4.開始模擬登錄
知道登錄過程了,我們就開始寫登錄的代碼。

至此,登錄就成功了。
5.優化
當你登錄成功后,你會問,我怎么知道登錄成功了呢?當你試圖去抓取http://write.blog.csdn.net/postlist的內容的時候,你會發現一個403的錯誤,這是為啥呢?
很簡單,user agent沒有修改,我們用的是默認的user agent,這不是一個正常的用戶,所以被網站拒絕了。我們加上它就好了:

后話
我們都知道cookie是有有效期的,在做調試時,每修改一次,就要模擬登錄一次,這樣不好,我們要保存cookie,這樣下次就不需要重新發送登錄請求了。
完整代碼如下:

