哎,好久沒有學習爬蟲了,現在想要重新拾起來。發現之前學習爬蟲有些粗糙,竟然連requests中添加cookies都沒有掌握,慚愧。廢話不宜多,直接上內容。
我們平時使用requests獲取網絡內容很簡單,幾行代碼搞定了,例如:
1
|
2
3
|
import requests res = requests.get( " https://cloud.flyme.cn/browser/index.jsp " ) print res.content |
你沒有看錯,真的只有三行代碼。但是簡單歸簡單,問題還是不少的。
首先,這里的請求只是get方法,并且沒有解決cookies的問題。
然后就是這里并沒有解決亂碼的問題。(亂碼是python中的變態點)其實,在requests的get方法中添加cookies的方法不難 可以這樣子:
1
|
|
res = requests.get( " https://cloud.flyme.cn/browser/index.jsp " ,cookies = cookies) |
我們所面臨的問題是,如何構造這里的cookies。
這里的cookies是一個字典格式的數據。
平時我們瀏覽網頁的時候,在審查元素中可以查看到所訪問網頁的cookies內容,大都是這樣子的:
1
|
|
sn_openNetBySms=%23810EBMA3TE53; sn_map=810EBMA3TE53; DSESSIONID=f1987887-3d1d-4a85-ad75-c6270e588290; JSESSIONID=; _uid=; _keyLogin=; _rmtk=; _uticket=ns_0393027c2f9f686e3499e8ebb8d1d622; _ckk=ns_397a592791064029bf1336eff1cf516e; ucuid=8a135520affa423584307f6e2c210f02; _domain=cloud.flyme.cn; _islogin=true; lang=zh_CN; JSESSIONID=1gmfzynp0ns6s1u6a92xkqgi6q |
天那,這是人看的嗎?不是。這是經過加密處理后的數據。同樣,我們可以將加密后的數據傳遞到get方法的cookies參數中,服務器會自動將加密后的數據進行解密,再檢查數據的正確性。
至于,如何查看所訪問網頁的cookies內容,可以使用瀏覽器的審查功能,F12或者右擊審查(Chrome)打開。在network中查看鏈接的Headers內容。另外,也可以使用軟件抓包查看,如Fiddler web Debugger。
這里假設獲取到了cookies的內容,我們可以保存到本地TXT文件中(直接把cookies的內容粘貼進去即可),例如test.txt文件。
然后,
1
|
2
3
4
5
6
|
f = open (r 'test.txt' , 'r' ) #打開所保存的cookies內容文件 cookies = {} #初始化cookies字典變量 for line in f.read().split( ';' ): #按照字符:進行劃分讀取 #其設置為1就會把字符串拆分成2份 name,value = line.strip().split( '=' , 1 ) cookies[name] = value #為字典cookies添加內容 |
這時候我們將cookies添加到get方法中:
1
|
|
res = requests.get( " https://cloud.flyme.cn/browser/index.jsp " ,cookies = cookies) |
這時候獲取到的res.content中就是我們將cookies信息添加到get中后訪問網頁所獲取的內容。
總結
以上就是本文關于python編程之requests在網絡請求中添加cookies參數方法詳解的全部內容,希望對大家有所幫助。
原文鏈接:http://blog.csdn.net/winterto1990/article/details/51213029