學習爬蟲,最初的操作便是模擬瀏覽器向伺服器發出請求,這就是requests庫的意義所在。
有了這個庫,我們不需要了解HTTP、TCP 、 IP 層的網路傳輸通訊,也不需要知道伺服器的響應和應答原理,只需要傳入url地址即可模擬瀏覽器傳送請求。
requests庫是Python第三方庫,需要開啟cmd等終端輸入以下程式碼安裝:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
1、模擬瀏覽器傳送請求
常用請求方式有兩種,get和post。
get請求基本模式:
# get請求常用引數requests.get(url, headers, proxies, cookies, timeout, verify)
post請求基本模式
# post請求常用引數requests.post(url, headers, proxies, timeout, verify, data)
2、Response物件和它的基本屬性
# 模擬瀏覽器傳送get請求response = requests.get("https://www.baidu.com")# 列印response物件型別print(type(response))# 列印響應題狀態碼print(response.status_code)# 列印urlprint(response.url)# 列印cookie的內容print(response.cookies)# 響應體的文字內容print(response.text) #根據html的頭部來猜編碼,可能不準確print(response.content.decode("utf-8")) # 自己根據charset手動解碼print(response.content.decode("gbk"))# 如果返回的是json格式,將會把json轉為字典print(response.json())
3、新增請求頭(headers)headers = { "User-Agent": "你自己的瀏覽器請求頭", "referer": "https://www.zhihu.com/"}
4、新增代理(proxies)
proxies = { "http": "http://10.10.1.11:3298", "https": "http://10.10.1.11:3452"}
5、新增cookie
cookies = """_zap=68f867be-eerr-adb2-02759bb15a46; d_c0="ALBSeVe2uRGPTjF2LXmnPte5Is74=|15973rw5xxxxxx...""""cookies = {i.split("=")[0]:i.split("=")[1] for i in cookies.split("; ")}
6、新增超時設定(timeout)
在本機網路狀況不好或者伺服器網路響應太慢甚至無響應時,我們可能會等待特別久的時間才可 能收到響應,甚至到最後收不到響應而報錯。為了防止伺服器不能及時響應,應該設定一個超時時間,即超過了這個時間還沒有得到響應,那就報錯。這需要用到 timeout 引數。這個時間的計算是傳送請求到伺服器返回響應的時間 。單位是秒。
例:
r = requests.get("https://www.baidu.com", timeout=1)
7、設定SSL證書驗證(verify引數)
預設是True,即驗證當前網頁是否有SSL證書,沒有會報錯。
可以設定如下設定關閉驗證:
response = requests.get("https://www.12306.cn", verify=False)
早期12306網站沒有SSL證書訪問時的狀態
最新評論