**
昨夜西風凋敝樹,獨上高樓,望盡天涯路
衣帶漸寬終不悔,爲伊消得人憔悴。
**
基於urllib庫的爬蟲實戰:
https://github.com/OTZHANG/SpiderBaseByPython/tree/master/venv/Include
基礎用法一:get
直接使用get方法發起get請求,返回一個response對象。此處沒有設置headers,User-Agent默認使用的是‘python-requests‘,版本爲當前requests庫的版本,具體可看源碼。
url = 'http://www.baidu.com'
resp = requests.get(url)
#def get(url, params=None, **kwargs)
- params可以用來傳遞url參數,比如:
url = 'http://www.baidu.com'
resp1 = requests.get(url)
print(resp1.url)
print(resp1.status_code)
param = {'key01':'03'}
url = 'http://www.baidu.com'
resp2 = requests.get(url,params=param)
print(resp2.url)
print(resp2.status_code)
設置了params參數後,會在url後面拼接key和value,典型的get請求方式。
- 給請求設置headers
headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24’}
resp1 = requests.get(url, headers=headers)
- 給請求設置cookie
cookies = dict(cookies_are=‘working’)
r = requests.get(url, cookies=cookies)
requests庫常用請求發起方法:
requests.get() #常用
requests.post() #常用
requests.put()
requests.delete()
requests.head()
requests.options()
請求的響應內容response:
resp.content # 按照相應原始報文進行顯示,不進行編碼解析
resp.text #按照指定編碼對原始報文進行解析顯示,如果未手動指定編碼,requests會從響應報文體中獲取編碼格式進行顯示。
resp.json() #requests 內置的json解析器,解析json數據
#獲取服務器原始套接字響應
resp.raw
resp.raw.read()
該場景下需要發起請求時指定stream=True
r = requests.get(‘http://www.baidu.com’, stream=True)
#獲取響應狀態
resp1.status_code
同時request中還有一個內置的狀態查詢對象
requests.codes.ok
#拋出響應異常
resp.raise_for_status()
重定向
#查詢所有一次請求的請求歷史和重定向(requests中除了head請求類型外,其他請求都默認開啓了重定向)
Response.history()
#是一個 Response 對象的列表,從最老到最近的請求進行排序。
#禁用重定向
allow_redirects=False
r = requests.get(‘http://github.com’, allow_redirects=False)
#head()類型,開啓重定向:
r = requests.head(‘http://github.com’, allow_redirects=True)
代理
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
#最重要的還是使用,學多少用多少,用到了,遇到不會的再回過頭來學。