requests庫
雖然python的標準庫中urllib模塊已經包含我們平常使用的大多數功能,但是它的API使用起來讓人感覺不太好,而Requests使用起來更加方便
安裝
利用pip 可以非常方便安裝:
pip install requests
發送get請求
- 最簡單的發送get請求的方式就是通過requests.get調用:
response=reqquests.get("http://www.baidu.com/")
- 添加headers和查詢參數
如果想要headers,可以傳入headers參數來增加請求頭中headers信息。如果要將參數傳入url,可以利用params參數。具體實例如下:
import requests
kw={'kw':'中國'}
headers={"Use-Agent":}
#params 接收一個字典或者字符串查詢參數,字典類型自動轉化爲url編碼
requests=requests.get("http://www.baidu.com/s",params=kw,headers=headers)
#查看響應內容,requests.text返回的是unicode格式數據
print(requests.text)
#查看響應內容,requests.content返回的是字節數據
print(requests.content)
#查看完整url地址
print(requests.url)
#查看響應頭部字符編碼
print(requests.encoding)
#查看響應碼
print(requests.statu_code)
- requests.text和requests.content比較
requests.text實例
import requests
response=requests.get("http://www.baidu.com/")
print(type(response.text))
print(response.text)
requests.content實例
#encoding utf-8
import requests
response=requests.get("http://www.baidu.com/")
print(type(response.content))
print(response.content.decode('utf-8'))
4.帶着參數zhongguo訪問百度頁面
import requests
#response=requests.get("http://www.baidu.com/")
#print(type(response.content))
#print(response.content.decode('utf-8'))
kw={'wd':'zhongguo'}
headers={"Use-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'}
#params 接收一個字典或者字符串查詢參數,字典類型自動轉化爲url編碼
response=requests.get("http://www.baidu.com/s",params=kw,headers=headers)
#查看響應內容,requests.text返回的是unicode格式數據
with open('baidu.html','w',encoding='utf-8') as fp:
fp.write(response.content.decode('utf-8'))
print(response.url)
發送post請求
發送post請求非常簡單,直接調用’request.post’方法就可以
如果返回的是josn數據。那麼可以調用’request.josn()'將josn字符串轉換爲字典或者列表。
response=reqquests.post("http://www.baidu.com/,data-data")
接下來通過訪問拉勾網來演示post請求
#發送post請求
import requests
import time
data={
'first':"ture",
'pn':'1',
'kd':'python'
}
url_start = "https://www.lagou.com/jobs/list_運維?city=%E6%88%90%E9%83%BD&cl=false&fromSearch=true&labelWords=&suginput="
url_parse = "https://www.lagou.com/jobs/positionAjax.json?city=成都&needAddtionalResult=false"
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Referer': 'https://www.lagou.com/jobs/list_%E8%BF%90%E7%BB%B4?city=%E6%88%90%E9%83%BD&cl=false&fromSearch=true&labelWords=&suginput=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
s=requests.Session()# 創建一個session對象
s.get(url=url_start,headers=headers,timeout=3)# 用session對象發出get請求,請求首頁獲取cookies
cookie=s.cookies# 爲此次獲取的cookies
response=requests.post("https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false",data=data,headers=headers,cookies=cookie,timeout=3)
time.sleep(7)
#print(cookie)
#print(type(response.json()))
print(response.text)
通過代理訪問網站
使用代理很簡單,只要在請求的方法中傳遞proxies參數就可以
實例如下:通過代理訪問網站http://httpbin/ip就可以看到ip跟本機不一樣
#通過代理訪問
import requests
#url="http://httpbin.org/ip"
proxy={
'http':'171.35.147.108:9999'
}
respones=requests.get("http://httpbin.org/ip",proxies=proxy)
print(respones.text)
處理cookie
如果想要在多次請求中共享cookie,那麼就應該使用session。代碼如下:
#處理cookie
#如果想要在多次請求中共享cookie,那麼就應該使用session。代碼如下:
url="http://www.renren.com/PLogin.do"
data={'email':'','password':''}
headers={
'Use-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}
session=requests.session()
session.post(url,data=data,headers=headers)
respones=session.get('http://www.renren.com/880151247/profile')
with open('renren.html','w',encoding='utf-8') as fp:
fp.write(respones.text)