python-爬蟲基礎篇-requests庫-基礎使用篇

**

昨夜西風凋敝樹,獨上高樓,望盡天涯路

衣帶漸寬終不悔,爲伊消得人憔悴。

**

基於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)

#最重要的還是使用,學多少用多少,用到了,遇到不會的再回過頭來學。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章