python爬蟲利器之requests庫

2021-10-07 18:06:41 字數 2218 閱讀 2368

原始碼傳送門

requests庫借助了urllib3庫,相較於urllib庫,**更加簡單,爬蟲效率更高。

在cmd中執行下列**來安裝requests庫。

pip install requests
我們直接使用requests.get()方法建立請求物件,例如,

import requests

response = requests.get(

"")# get()方法中的引數為所爬網頁的url位址

requests庫中獲取可以通過.text或.content返回資料。注意,.text會在返回資料的時候自動進行解碼,可能會出現解碼錯誤;而.content會直接返回位元組流資料,需要我們自己通過decode()方法自行解碼。例如,

print

(response.text)

# unicode格式的資料,自動解碼

print

(type

(response.text)

)print

(response.content)

# 返回位元組流資料

print

(response.content.decode(

'utf-8'

))

我們還可以返回以下資料,

print

(response.url)

# 返回完整的url位址

print

(response.encoding)

# 返回響應頭的字元編碼

print

(response.status_code)

# 返回響應碼

如果我們需要以get方法傳入相關資料,需要給requests.get()傳入params引數。注意,這裡傳入的資料不需要通過urlencode()進行處理,直接以字典的形式傳入即可。

同樣,為了防止伺服器發現我們是爬蟲,需要給給requests.get()傳入header引數。

import requests

headers =

params =

# 相關引數

response = requests.get(

"", params=params, headers=headers)

print

(response.content.decode(

'utf-8'

))

post請求需要使用requests.post()方法。

與urllib的post請求相同,我們只需給requests.post()方法新增data引數,即可實現post請求。

例如,我們要爬取有道翻譯的翻譯結果,

import requests

headers =

url =

""# url位址

keyword =

input

("請輸入要查詢的單詞:"

)# 輸入要翻譯的單詞

data =

# 傳入相關data引數,相關引數可以在瀏覽器的「檢查」-「網路」中找到

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

# 處理獲取的資料

dic = response.json(

)print

(dic[

'translateresult'][

0][0

]['tgt'

])

為了防止ip位址被封,我們需要使用**來爬取資料。

我們只需給requests.get()方法傳入proxies引數即可實現**。注意,proxies引數必須是字典形式,鍵為網路協議名稱,值為ip位址加埠號。例如,

import requests

import random

headers =

ip_lists =[,

,,,]

proxy = random.choice(ip_lists)

# 隨機選取乙個**ip位址

response = requests.get(

"", proxies=proxy, headers=headers)

print

(response.text)

Python爬蟲利器之selenium有無介面

selenium通過模擬瀏覽器完成一些操作,但是在一些伺服器上是沒有圖形介面的,自然使用selenium操作需要在無介面操作。from selenium import webdriver driver webdriver.chrome driver.get driver.quit python3 f...

Python 爬蟲利器 Selenium

前面幾節,我們學習了用 requests 構造頁面請求來爬取靜態網頁中的資訊以及通過 requests 構造 ajax 請求直接獲取返回的 json 資訊。還記得前幾節,我們在構造請求時會給請求加上瀏覽器 headers,目的就是為了讓我們的請求模擬瀏覽器的行為,防止被 的反爬蟲策略限制。今天要介紹...

Python 爬蟲利器 Selenium

前面幾節,我們學習了用 requests 構造頁面請求來爬取靜態網頁中的資訊以及通過 requests 構造 ajax 請求直接獲取返回的 json 資訊。還記得前幾節,我們在構造請求時會給請求加上瀏覽器 headers,目的就是為了讓我們的請求模擬瀏覽器的行為,防止被 的反爬蟲策略限制。今天要介紹...