python爬蟲之網頁的獲取requests的使用



import requests

response = requests.get("https://www.baidu.com")
print(type(response))
print(response.status_code)
print(type(response.text))
print(response.text)
print(response.cookies)
print(response.content)
print(response.content.decode("utf-8"))

關於請求亂碼問題:
不管是通過response.content.decode("utf-8)的方式
還是通過response.encoding="utf-8"的方式都可以避免亂碼的問題發生

請求:
GET請求:URL查詢字符串傳遞數據,通常我們會通過httpbin.org/get?key=val方式傳遞
data = {
"name":"zhaofan",
"age":22
}
response = requests.get("http://httpbin.org/get",params=data)

注:如果字典中的參數為None則不會添加到url上

解析json:
requests里面集成的json其實就是執行了json.loads()方法,兩者的結果是一樣的

獲取二進制數據:
在上面提到了response.content,這樣獲取的數據是二進制數據,同樣的這個方法
也可以用於下載圖片以及視頻資源

添加請求頭(headers):
headers = {

"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
response =requests.get("https://www.zhihu.com",headers=headers)

基本POST請求:

通過在發送post請求時添加一個data參數,這個data參數可以通過字典構造成,這樣
對於發送post請求就非常方便。

響應:
可以通過response獲得很多屬性
response.status_code 狀態碼
response.headers 請求頭
response.cookies cookie
response.url
response.history


requests高級用法
文件上傳
files= {"files":open("git.jpeg","rb")}
response = requests.post("http://httpbin.org/post",files=files)
獲取cookie
for key,value in response.cookies.items():
print(key+"="+value)
會話維持
s = requests.Session()
s.get("http://httpbin.org/cookies/set/number/123456")
response = s.get("http://httpbin.org/cookies")
證書驗證
現在的很多網站都是https的方式訪問,所以這個時候就涉及到證書的問題
利用:verify=False
response = requests.get("https://www.12306.cn",verify=False)
代理設置
proxies= {
"http":"http://127.0.0.1:9999",
"https":"http://127.0.0.1:8888"
}
response = requests.get("https://www.baidu.com",proxies=proxies)
如果代理需要設置賬戶名和密碼,只需要將字典更改為如下:
proxies = {
"http":"http://user:password@127.0.0.1:9999"
}
如果你的代理是通過sokces這種方式則需要pip install "requests[socks]"
proxies= {
"http":"socks5://127.0.0.1:9999",
"https":"sockes5://127.0.0.1:8888"
}
超時設置
通過timeout參數可以設置超時的時間
認證設置(碰到需要認證的網站)
from requests.auth import HTTPBasicAuth
response = requests.get("http://120.27.34.24:9001/",auth=HTTPBasicAuth("user","123"))

或者
response = requests.get("http://120.27.34.24:9001/",auth=("user","123"))
異常處理


免責聲明!

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



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