1. 程式人生 > >Python爬蟲小白入門(二)requests庫

Python爬蟲小白入門(二)requests庫

轉自:https://www.cnblogs.com/Albert-Lee/p/6230337.html

一、前言


為什麼要先說Requests庫呢,因為這是個功能很強大的網路請求庫,可以實現跟瀏覽器一樣傳送各種HTTP請求來獲取網站的資料。網路上的模組、庫、包指的都是同一種東西,所以後文中可能會在不同地方使用不同稱謂,不要迷惑哦。

結合一個例項來講解吧。我的一個設計師小夥伴常去一些設計類網站收集素材,其中有個網站Unsplash裡面美圖特別多,所以想要把裡面的圖片都儲存下來,這樣咱們的小爬蟲就登場了。說幹就幹,趕緊開始吧。

先來準備環境

二、執行環境


  • 系統版本
    我使用的是Windows10。
    好多小夥伴使用的是Mac,配置上基本相同。由於我多年混跡於微軟的開發平臺,經常使用Visual Studio、SQL Server啥的,用Windows用習慣了(其實主要是因為Qiong窮!)。所以這個教程我就以Windows系統為例了。

  • Python版本
    我電腦裝了好多個Python版本(學一個裝一個。。。),不過推薦使用Anaconda這個科學計算版本,主要是因為它自帶一個包管理工具,可以解決有些包安裝錯誤的問題。去Anaconda官網,選擇Python3.5版本,然後下載安裝。

  • IDE
    我使用的是PyCharm,是專門為Python開發的IDE。這是JetBrians的產品,

    點我下載

三、requests 庫的安裝


使用Anaconda 版本的得小夥伴兒:用管理員許可權執行cmd命令視窗,然後輸入
conda install requests

看動圖:

直接使用Python3.5的小夥伴兒輸入這個命令:
pip install requests

如果你機器上存在多個Python版本,要給Python3.5的版本安裝requests庫,需要輸入以下命令:
py -3 -m pip install requests

好啦,requests庫安裝完畢,接下來我們會在實際例子中演示它的使用。想要深入瞭解requests模組的小夥伴也可以仔細閱讀

英文官方文件,和中文官方文件,如果用到該文沒有提到的功能,則檢視文件即可。

四、開工


首先我們開啟PyCharm,需要選擇一下它的頁面主題。選擇你喜歡的風格,以及選擇使用的Python版本。然後開啟一個你想要存放爬蟲的目錄,進入後長這樣。

我們再建立一個python檔案,輸入第一行程式碼來匯入requests庫:
import requests #匯入requests庫

然後用它來獲取咱們的目標網頁:

r = requests.get('https://unsplash.com') #像目標url地址傳送get請求,返回一個response物件
print(r.text) #r.text是http response的網頁HTML

在選單欄點選“Run”,選擇該檔案(或者直接在視窗中點選右鍵,執行該檔案):

執行完之後,底部會出現輸出結果:


可以看到底部是獲取到的網頁內容。這就完成了爬蟲的第一步,獲取到了網頁的HTML內容。
怎麼樣,很簡單吧。

這只是用到了requests庫的get請求,還有其他的請求使用也與之類似。下面我們簡單介紹一下每個請求的用法。

五、requests庫的使用


因為有中文的官方文件,我就不介紹所有的功能了,只把常用到的說一下,大家用到更多功能的時候再去翻官方文件吧。

requests 庫就是用來發送各種請求的,所以,我們就來看看各種請求怎麼使用:

5.1 get 請求

r = requests.get("https://unsplash.com")
這就是我們剛剛用到的。其實就是向網站傳送了一個get請求,然後網站會返回一個response。r 就是response。大家可以在執行的時候檢視r的type。
print(type(r))

get請求還可以傳遞引數:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)

上面程式碼向伺服器傳送的請求中包含了兩個引數key1和key2,以及兩個引數的值。實際上它構造成了如下網址:
http://httpbin.org/get?key1=value1&key2=value2

5.2 POST請求

無引數的post請求:
r = requests.post("http://httpbin.org/post")
有引數的post請求:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)

post請求多用來提交表單資料,即填寫一堆輸入框,然後提交。

5.3 其他請求

其他一些請求例如put請求、delete請求、head請求、option請求等其實都是類似的。但是平時用的不多,就不仔細介紹了。有用到的可以去看官網文件哦。閱讀官方文件是必備技能!

r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

六、後語


我們剛才用requests庫傳送http請求獲得了網頁的HTML內容,那麼應該如何從HTML中獲得圖片呢?

BeautifulSoup庫就此登場啦,趕快去看一下篇來了解它的用法吧。