零基础学习pythonrequests_requests库初体验
和urllib庫相比,requests庫更加深得人心,它不僅能夠重復(fù)地讀取返回的數(shù)據(jù),而且還能自動確定響應(yīng)內(nèi)容的編碼。為了能讓大家直觀地看到這些變化,接下來,分別使用urllib庫和requests庫爬取百度網(wǎng)站中“傳智播客”關(guān)鍵字的搜索結(jié)果網(wǎng)頁。
(1)使用urllib庫以GET請求的方式爬取網(wǎng)頁,具體代碼如下:
# 導(dǎo)入請求和解析模塊
import urllib.request
import urllib.parse
# 請求的URL路徑和查詢參數(shù)
url = "http://www.baidu.com/s"
word = {"wd":"傳智播客"}
# 轉(zhuǎn)換成url編碼格式(字符串)
word = urllib.parse.urlencode(word)
# 拼接完整的URL路徑
new_url = url + "?" + word
# 請求報頭
headers ={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
# 根據(jù)URL和headers構(gòu)建請求
request = urllib.request.Request(new_url, headers = headers)
# 發(fā)送請求,并接收服務(wù)器返回的文件對象
response = urllib.request.urlopen(request)
# 使用read方法讀取獲取到的網(wǎng)頁內(nèi)容,使用UTF-8格式進行解碼
html = response.read().decode('UTF-8')
print(html)
(2)使用requests庫以GET請求的方式爬取網(wǎng)頁,具體代碼如下:
# 導(dǎo)入requests庫
import requests
# 請求的URL路徑和查詢參數(shù)
url = "http://www.baidu.com/s"
param = {"wd": "傳智播客"}
# 請求報頭
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/51.0.2704.103 Safari/537.36"
}
# 發(fā)送GET請求,返回一個響應(yīng)對象
response = requests.get(url, params=param, headers=headers)
# 查看響應(yīng)的內(nèi)容
print(response.text)
比較上述兩段代碼不難發(fā)現(xiàn),使用requests庫減少了發(fā)送請求的代碼量。接下來,我們再從細(xì)節(jié)上體會一下requests庫的便捷之處,具體如下:
無須再轉(zhuǎn)換為URL路徑編碼格式,拼接完整的URL路徑。
無須再頻繁地為中文轉(zhuǎn)換編碼格式。
從發(fā)送請求的函數(shù)名稱,可以很直觀地判斷發(fā)送到服務(wù)器的方式。
另外,urlopen方法返回的是一個文件對象,需要調(diào)用read()方法一次性讀取;而get函數(shù)返回的是一個響應(yīng)對象,可以訪問該對象的text屬性查看響應(yīng)的內(nèi)容。
這里雖然只初步介紹了requests庫的用法,但是我們也可以從中看出,整個程序的邏輯非常易于理解,更符合面向?qū)ο箝_發(fā)的思想,并且減少了代碼量,提高了開發(fā)效率,給開發(fā)人員帶來了便利。
總結(jié)
以上是生活随笔為你收集整理的零基础学习pythonrequests_requests库初体验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt5.9.0调试如何查看变量的值_从0
- 下一篇: python如何下载tushare_安装