基於python的request庫,模擬登錄csdn博客


      以前爬蟲用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,這樣下次就不需要重新發送登錄請求了。

完整代碼如下:

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM