基于python的request库,模拟登录csdn博客
? ? ? 以前爬蟲(chóng)用urllib2來(lái)實(shí)現(xiàn),也用過(guò)scrapy的爬蟲(chóng)框架,這次試試requests,剛開(kāi)始用,用起來(lái)確實(shí)比urllib2好,封裝的更好一些,使用起來(lái)簡(jiǎn)單方便很多。
安裝requests庫(kù)
? ? 最簡(jiǎn)便的方法就是使用pip來(lái)安裝:pip install requests;如果需要安裝特定版本,則在后面加上版本號(hào)即可:pip install requests == 1.9.7,這樣就搞定了。
快速上手的小例子
下面說(shuō)一個(gè)最簡(jiǎn)單的例子:
?
第一行,引入requests庫(kù),這是必然的。
第二行,通過(guò)get方法獲取百度首頁(yè)的內(nèi)容。
第三行,把返回的response內(nèi)容,輸出出來(lái)。
果然很簡(jiǎn)單,這樣就可以發(fā)送一個(gè)get請(qǐng)求,同理,也可以使用requests.post,requests.put,requests.options,requests.head,發(fā)送請(qǐng)求。
模擬登錄csdn
我們需要其他的輔助工具
瀏覽器:Firefox
瀏覽器插件:tamper data,firebug
我們需要tamper data來(lái)攔截請(qǐng)求,因?yàn)閏hrome沒(méi)有這個(gè)功能的插件,所以這個(gè)只能使用firefox來(lái)做(除了攔截請(qǐng)求chrome沒(méi)有,其他的工作都可以使用chrome)。
分析登錄過(guò)程
1.打開(kāi)登錄頁(yè)面
我們首先打開(kāi)csdn的登錄頁(yè)面:https://passport.csdn.net/account/login?ref=toolbar,這個(gè)鏈接,前面的部分是登錄的網(wǎng)址,問(wèn)號(hào)后面的參數(shù),referer,就是你從哪里跳過(guò)來(lái)的,也許是一個(gè)頁(yè)面跳轉(zhuǎn)到登錄的,toolbar就是我自己點(diǎn)擊頂部導(dǎo)航欄,然后跳轉(zhuǎn)到登錄頁(yè)面的。
2.清除相關(guān)的cookie
為了清除不必要的干擾,我們先清除掉所有的相關(guān)的cookie,這樣方便我們分析哪些參數(shù)是必須的。
3.登錄過(guò)程分析
清除了cookie后,我們刷新一下頁(yè)面,https://passport.csdn.net/account/login?ref=toolbar,重新獲取對(duì)應(yīng)的cookie。
然后我們就開(kāi)始用tamper data來(lái)攔截請(qǐng)求。
我們點(diǎn)擊start tamper?,在網(wǎng)頁(yè)中填寫(xiě)用戶(hù)名和密碼,點(diǎn)擊“登錄”,會(huì)發(fā)出一個(gè)請(qǐng)求,然后tamper data 會(huì)攔截下這個(gè)請(qǐng)求,詢(xún)問(wèn)我們是否攔截,點(diǎn)擊tamper,我們可以在這個(gè)請(qǐng)求提交之前,查看請(qǐng)求的內(nèi)容,還可以做刪除。
發(fā)送一個(gè)登錄表單過(guò)去,就登錄成功了。
4.開(kāi)始模擬登錄
知道登錄過(guò)程了,我們就開(kāi)始寫(xiě)登錄的代碼。
至此,登錄就成功了。
5.優(yōu)化
當(dāng)你登錄成功后,你會(huì)問(wèn),我怎么知道登錄成功了呢?當(dāng)你試圖去抓取http://write.blog.csdn.net/postlist的內(nèi)容的時(shí)候,你會(huì)發(fā)現(xiàn)一個(gè)403的錯(cuò)誤,這是為啥呢?
很簡(jiǎn)單,user agent沒(méi)有修改,我們用的是默認(rèn)的user agent,這不是一個(gè)正常的用戶(hù),所以被網(wǎng)站拒絕了。我們加上它就好了:
后話(huà)
我們都知道cookie是有有效期的,在做調(diào)試時(shí),每修改一次,就要模擬登錄一次,這樣不好,我們要保存cookie,這樣下次就不需要重新發(fā)送登錄請(qǐng)求了。
完整代碼如下:
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/ljfight/p/6030596.html
總結(jié)
以上是生活随笔為你收集整理的基于python的request库,模拟登录csdn博客的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JMeter中3种参数值的传递
- 下一篇: 偶遇github