Requests爬蟲

Requests

Requests 繼承了urllib的所有特性,並且API使用更加方便,可以簡化我們的代碼

  • 如何使用Requests

GET

  • 1 導入 import requests
  • 2 發起請求
url = '目標url地址'

# 設置請求頭
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}

#發起請求   接收響應
response = requests.get(url=url,params=None,headers=headers,verify=False)

requests請求參數

method: 設置請求方式 get、post、delete
url: 目標url
params: 跟的是get請求url地址後?後面拼接的參數
data: (optional) Dictionary, post請求的參數.
headers: (optional) Dictionary 設置請求頭.
cookies: (optional) Dict or CookieJar object 設置用戶的cookies信息.
files: (optional) Dictionary 文件上傳(post).
auth: Auth 認證.
timeout: 設置請求的超時時間
allow_redirects: 設置是否允許重定向,默認是允許的
proxies: (optional) Dictionary 設置代理.
verify: (optional) Either a boolean, Defaults to True.
#忽略證書認證,則設置爲False

響應結果

response.text > 頁面源碼
response.status_code > 響應狀態碼
response.headers > 響應頭
response.request.headers > 獲取請求頭
response.content > 獲取頁面的二進制數據

POST

  • 1 設置表單參數
form_data = {
    'username':'......',
    'password':'......',
}
  • 發起請求
url = '目標url地址'

headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}

response = requests.post(url=url,data=form_data,headers=headers)

#------如果是json數據可以調用json方法,將json字符串轉換爲python數據類型------
response.json()['key']

  • 文件上傳
#測試url
url = 'https://httpbin.org/post'

#讀取本地文件
files = {'file':open('page.html','r',encoding='gbk')}

response = requests.post(url=url,files=files,headers=headers)

if response.status_code == 200:
    print('文件上傳成功')
    print(response.text)
  • 獲取cookies
#  response : 頁面響應結果
cookies = response.cookies

# 將cookie存在字典中
cookies_dict = {}
for cookie in cookies:
    cookies_dict[cookie.name] = cookie.value
    # print(cookie.name,cookie.value)
print(cookies_dict)

#dict_from_cookiejar:把RequestsCookieJar對象轉成字典
cookies_dict2 = requests.utils.dict_from_cookiejar(cookies)
print(cookies_dict2)

####設置cookies##########
#方式一:從瀏覽器獲取cookies,放在請求的頭部
#方式二,通過設置請求的cookies參數,
#cookies: (optional) Dict or CookieJar object
response = requests.get(
    url=url,headers=headers,
    cookies=cookies_dict2
)
print(response.status_code)
print('設置cookies後的請求頭部',response.headers)
  • session
  • 在requests請求中,我們往往需要讓上下請求保持聯繫,這時我們就需要使用session
#實例化session()對象
session = requests.session()

headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = session.get('http://www.baidu.com/',headers=headers)

print(response.headers)
print(session.cookies) #session.cookies 保存的是服務器,返回的cookies信息


#當session.cookies有用戶信息之後,我們再使用session.get()或者session.post()
#發起請求時,就會自動攜帶cookies等信息
response = session.get('http://www.baidu.com/',headers=headers)


# 一般情況下,我們會再模擬登錄時用到request.session,先完成登錄,
# 然後使用session發起請求
  • 設置代理
proxies = {
    'http':'代理',
    'http':'代理',
}

#proxies(設置代理參數): (optional) Dictionary
response = requests.get(url=url,params=None,
                        headers=headers,
                        proxies=proxies)

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