溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲request模塊如何使用

發(fā)布時間:2020-09-24 09:34:18 來源:億速云 閱讀:164 作者:Leah 欄目:編程語言

本篇文章為大家展示了Python爬蟲request模塊如何使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

爬蟲——requests模塊

Requests繼承了urllib.request的所有特性,Requests支持HTTP連接保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應內(nèi)容的編碼,支持國際化的URL和POST數(shù)據(jù)自動編碼。

相較于urllib.request而言,其使用更加簡潔方便。

基本GET請求(headers參數(shù)和parmas參數(shù))

1.最基本的GET請求可以直接用get方法

#!/usr/bin/python3
# -*- coding:utf-8 -*-
import requests
 
response = requests.get("http://www.baidu.com/")
# 也可以這么寫
# response = requests.request("get", "http://www.baidu.com/")

2.添加headers和查詢參數(shù)

如果想添加headers,可以傳入headers參數(shù)來增加請求頭中的headers信息。如果要將參數(shù)放在url中傳遞,可以利用params參數(shù)。

#!/usr/bin/python3
# -*- coding:utf-8 -*-
 
import requests
 
url = "http://www.baidu.com/s?"
 
kw = {"wd":"爬蟲"}
 
# User-Agent頭
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
 
# params接收一個字典或者字符串的查詢參數(shù),字典類型自動轉(zhuǎn)換為url編碼,不需要urlencode()
response = requests.get(url = url, params = kw, headers = header)
 
# 打印響應內(nèi)容,response.text返回的是Unicode格式的數(shù)據(jù)
print(response.text)
# 打印響應內(nèi)容,response.content返回的是字節(jié)流數(shù)據(jù)
# print(response.content)
 
# 查看完整的url地址
print(response.url)
 
# 查看響應頭部字符編碼
print(response.encoding)
 
# 查看響應碼
print(response.status_code)

使用response.text時,requests會基于HTTP響應的文本編碼自動解碼響應內(nèi)容,大多數(shù)Unicode字符集都能被無縫地解碼。

使用response.content時,返回的是服務器響應數(shù)據(jù)的原始二進制字節(jié)流,可以用來保存圖片等二進制文件。

基本POST討還(data參數(shù))

1.最基本的GET請求可以直接用post方法

#!/usr/bin/python3
# -*- coding:utf-8 -*-
 
import requests
 
response = requests.post("http://www.baidu.com/")
# 也可以這么寫
# response = requests.request("post", "http://www.baidu.com/")

2.傳入data數(shù)據(jù)

對于POST請求來說,我們一般需要為它增加一些參數(shù)。那么最基本的傳參方法可以利用data這個參數(shù)。

#!/usr/bin/python3
# -*- coding:utf-8 -*-
 
import requests
 
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
 
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
 
word = input("請輸入需要翻譯的詞條:")
 
from_data = {
    "i":word,
    "from":"AUTO",
    "to":"AUTO",
    "smartresult":"dict",
    "doctype":"json",
    "version":"2.1",
    "keyfrom":"fanyi.wed"
}
 
response = requests.post(url = url, data = from_data, headers = header)
 
# print(response.text)
print(response.json())

代理(proxies參數(shù))

如果需要使用代理,你可以通過為任意請求方法提供proxies參數(shù)來配置單個請求:

#!/usr/bin/python3
# -*- coding:utf-8 -*-
__author__ = 'mayi'
 
import requests
 
# 根據(jù)協(xié)議類型,選擇不同的代理
proxies = {
    "http": "http://12.34.56.78:90",
    "https": "http://21.43.65.87:90"
}
 
response = requests.get("http://www.baidu.com/", proxies = proxies)
 
print(response.text)

Cookies和Sission

1.Cookies

如果一個響應中包含了cookie,那么我們可以利用cookies參數(shù)拿到:

#!/usr/bin/python3
# -*- coding:utf-8 -*-
__author__ = 'mayi'
 
import requests
 
response = requests.get("http://www.baidu.com/")
 
cookiejar = response.cookies
 
cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
 
print(cookiejar)
 
print(cookiedict)

2.Sission

在requests里,session對象是一個非常常用的對象,這個對象代表一次用戶會話:從客戶端連接服務器開始,到客戶端瀏覽器與服務器斷開。

會話能讓我們在跨請求時候保持某些參數(shù),比如在同一個Session實例發(fā)出的所有請求之間保持cookie。

實現(xiàn)人人網(wǎng)登錄

#!/usr/bin/python3
# -*- coding:utf-8 -*-
__author__ = 'mayi'
 
import requests
 
# 創(chuàng)建session對象,用于保存Cookie值
session = requests.session()
 
# User-Agent頭
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
 
# 需要登錄的賬戶和密碼
email = input("請輸入您的賬戶:")
password = input("請輸入您的密碼:")
data = {"email": email, "password": password}
 
# 發(fā)送附帶賬戶密碼的請求,并獲取登錄后的Cookie值,保存在session中
session.post("http://www.renren.com/PLogin.do", data = data)
 
# session中包含了登錄后的Cookie值,可以直接訪問那些需登錄后才能訪問的頁面
response = session.get("http://www.renren.com/413928886/profile")
 
# 打印響應內(nèi)容
print(response.text)

上述內(nèi)容就是Python爬蟲request模塊如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI