53. Python 爬蟲(2)
阿新 • • 發佈:2018-01-25
expires www. als aid rgb user col pri request Cookie
Requests通過會話信息來獲取cookie信息
Cookie的五要素:
Name value domain path expires
打印cookie的五大要素
import requests url = "http://www.hao123.com" s = requests.session() r = s.get(url) print (r.cookies) for cook in r.cookies: print (cook.name) print (cook.value) print (cook.domain) print (cook.path) print (cook.expires) print ("#" * 30)
打印結果:
<RequestsCookieJar[<Cookie BAIDUID=C425EDB0B83699C89BDA3D02B25C53BA:FG=1 for .hao123.com/>, <Cookie hz=0 for .www.hao123.com/>, <Cookie ft=1 for www.hao123.com/>, <Cookie v_pg=normal for www.hao123.com/>]> BAIDUID C425EDB0B83699C89BDA3D02B25C53BA:FG=1 .hao123.com / 1548337791 ############################## hz 0 .www.hao123.com / None ############################## ft 1 www.hao123.com / 1516809599 ############################## v_pg normal www.hao123.com / None ##############################
你只要獲得了登陸頁的cookies,你就可對網站進行合理的請求和訪問了。
使用已知cookie信息,如何訪問網站:
import requests url = 'http://httpbin.org/cookies' r = requests.get(url, cookies={'key1': 'value1', 'key2': 'value2'}) print(r.text)
結果:
{ "cookies": { "key1": "value1", "key2": "value2" } }
請求到我的IP地址:
import requests url = "http://2017.ip138.com/ic.asp" s = requests.session() r = s.get(url=url) print (r.encoding) r.encoding = "gbk" print (r.text)
代理訪問:
采集時為避免被封IP,經常會使用代理。
requests也有相應的proxies屬性。
西刺代理
import requests proxies = { "http": "http://139.208.187.142:8118" } r1 = requests.get("http://2017.ip138.com/ic.asp", proxies=proxies) r1.encoding = "gbk" print (r1.text)
請求結果:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <title> 您的IP地址 </title> </head> <body style="margin:0px"><center>您的IP是:[139.208.187.142] 來自:吉林省延邊朝鮮族自治州 聯通</center></body></html>
如果代理需要賬戶和密碼,則需這樣:
proxies = { "http": "http://user:[email protected]:3128/", }
requests的中文亂碼問題:
import requests param = {"key1": "hello", "key2": "world"} url = 'https://www.baidu.com/' r = requests.get(url=url) print(r.encoding) #ISO-8859-1默認使用的是這個 r.encoding = "utf-8" print(r.text)
這樣就可以正常顯示了
總結:
Requests給你提供的所有接口,在傳輸數據的時候,都可以以key:value的形式進行傳輸,這個也是為什麽特別使用requests的原因
如果你使用urllib,那麽你就沒有這麽幸運了,很多事情都需要你自己去處理,並不可以直接通過dict的形式進行傳輸,需要進行裝換。
53. Python 爬蟲(2)