python table数据抓取_Python爬虫:数据抓取工具及类库详解
前言
文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。
作者: ncepu_Chen
PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
數據抓取的命令行工具
curl
curl是一個利用URL語法在命令行下進行網絡通信的工具,類似于一個命令行版本的瀏覽器,但不會對頁面進行渲染.其用法很簡單,直接在命令行中輸入curl [URL地址] [參數]即可,如:
其常用參數如下:
wget
wget也是一個利用URL語法在命令行環境下進行文件傳輸的工具,其基本用法為wget [URL地址] [參數],如:
wget https://www.baidu.com其常用參數如下:
下面例子演示如何使用wget鏡像一個網站到本地并啟動:
使用wget --mirror命令將整個網站的鏡像下載到本地
切換到下載好的資源目錄下,使用Python自帶的http.server模塊開啟一個微型服務器
訪問localhost:8000,即可訪問我們搭建在本機上的鏡像網站.
數據抓取的Python庫
Python中有兩個常用的抓取數據的庫:urllib和requests.其中requests庫封裝了urllib庫,且比urllib庫更為優雅.因此,我們可以直接學習requests庫.
requests庫
request庫的應用比較簡單,下面是官方提供的一段示例代碼:
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))r.status_code # 返回 200r.headers['content-type'] # 返回 'application/json; charset=utf8'r.encoding # 返回 'utf-8'r.text # 返回 u'{"type":"User"...'r.json() # 返回 {u'private_gists': 419, u'total_private_repos': 77, ...}requests庫的簡單使用
發送HTTP請求
下面幾個方法可以發送HTTP請求,對應于HTTP的各種請求類型
- requests.get(url, params=None, **kwargs)
- requests.post(url, data=None, json=None, **kwargs)
- requests.put(url, data=None, **kwargs)
- requests.delete(url, **kwargs)
- requests.head(url, **kwargs)
- requests.options(url, **kwargs)
上面六個方法分別對應HTTP請求類型中的GET,POST,PUT,DELETE,HEAD和OPTIONS,各參數意義如下:
- url: 請求的URL地址.
- params: GET請求放進URL中的請求參數,以字典形式存儲.
- data: 請求體中的數據.
- **kwargs: 該請求需要的其他參數,包括:
- headers: 以字典格式存儲的請求頭內容.
- json: 以字典形式存儲的請求體中數據,等同于data參數
- cookies: 以字典形式存儲的cookies.
- allow_redirects: 是否允許重定向,為一個布爾值
- timeout: 設置超時時間,單位為秒
- auth: 設置身份認證信息
解析HTTP響應
上述requests.get(), requests.post(), requests.put(), requests.delete(), requests.head(), requests.options()方法都會返回一個requests.models.Response對象,該對象封裝了HTTP響應報文,該對象提供了下述常用方法和屬性用于解析HTTP響應.
解析響應狀態的屬性和方法
url: 表示該HTTP請求的URL.
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}r = requests.get('http://httpbin.org/get', params=payload)r.url # 得到 http://httpbin.org/get?key1=value1&key2=value2&key2=value3- tatus_code: 該HTTP響應的狀態碼.
- reason: 響應狀態碼的說明.
解析響應內容的屬性和方法:
- encoding: 該HTTP響應的編碼.
- content: 該HTTP響應的內容.
- text: 該HTTP響應的文本.根據r.encoding設置的編碼格式對r.content進行解碼得到.
- .json(): 將json格式的相應內容解析為字典,若解析失敗則拋出ValueError異常.
解析響應頭的屬性和方法:
- headers: 以字典形式返回HTTP響應頭,該字典的特殊之處在于其不區分鍵的大小寫.
報錯
- 遇到網絡問題(如DNS 查詢失敗、拒絕連接等)時,拋出一個ConnectionError異常.
- 若HTTP請求返回了不成功的狀態碼(4xx或5xx),調用Response對象的raise_for_status() 會拋出一個HTTPError異常.
- 若請求超時,則拋出一個Timeout異常.
- 若請求超過了設定的最大重定向次數,則會拋出一個TooManyRedirects異常.
上述所有異常都繼承自requests.exceptions.RequestException .
總結
以上是生活随笔為你收集整理的python table数据抓取_Python爬虫:数据抓取工具及类库详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 25 linux ndk 头文件_正点原
- 下一篇: vbseltext_VB编程技巧之sel