Python網絡爬蟲學習基礎筆記

python requests庫爬蟲基礎

本次學習的python爬蟲所使用的是requests
下面就是requests庫的7種主要方法python

方法名 說明
requests.request() 構造一個請求,支撐如下各方法的基礎方法
request.get() 獲取HTML網頁的主要方法,對應HTTP的GET
requests.head() 獲取HTML網頁的主要方法,對應HTTP的HEAD
requests.post() 向HTML網頁提交POST請求的方法,對應於HTTP的POST
requests.put() 向HTML網頁提交PUT請求的方法,對應於HTTP的PUT
requests.patch() 向HTML網頁提交局部修改請求,對應於HTTP的PATCH
requests.delete() 向HTML頁面提交刪除請求,對應於HTTP的DELETE

get()方法簡介

部分語法r=requests.get(url)
表示構造一個向服務器請求資源的Request對象,返回一個包含服務器資源的Respon對象
完整語法requests.get(url,params=None,**kwargs)shell

get()方法參數 說明
url 擬獲取頁面的URL連接
params url中的額外參數,控制字典或字節流格式(可選)
**kwargs 12個控制訪問參數

Response對象屬性 說明
r.status_code HTTP請求的返回狀態,200表示連接成功404表示失敗
r.text HTTP響應內容的字符串形式,即,url對應的頁面內容
r.encoding 從HTTP header中猜想的響應內容編碼方式
r.apparent_encoding 從內容分析出的響應內容的編碼方式(備選編碼方式)
r.content HTTP響應內容的二進制形式

基本示例json

#在python shell中進行逐行輸入
import requests
r=requests.get("http://www.baidu.com")
r.status_code#返回了200表示訪問成功
r.text#輸出訪問內容--發現有部分中文亂碼
r.encoding#發現編碼爲ISO-8859-1
r.apparent_encoding#發現內容編碼爲UTF-8
r.encoding = 'utf-8'#將讀取編碼改成utf-8
r.text#此時發現輸出內容正常

r.encoding:若是header中不存在charset,則認爲默認編碼爲ISO-8859-1
r.apparent_encoding:根據網頁內容分析出的編碼方式瀏覽器


Requests庫異常

異常 說明
requests.ConnectionError 網絡鏈接錯誤異常,如DNS查詢失敗、拒絕鏈接等
requests.HTTPError HTTP錯誤異常
requests.URLRequired URL缺失異常
requests.TooManyRedirects 超過最大重定向次數,產生重定向異常
requests.ConnectTimeout 鏈接遠程服務器超時異常
requests.Timeout 請求URL超時,產生超時異常

Response異常服務器

異常 說明
r.raise_for_status() 若是不是200,產生異常 requests.HTTPError

爬取網頁通用代碼框架

import requests
def getHtmlText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()#狀態碼不是200時,引起HTTPError異常
        r.encoding = r.apparent_encoding#設置讀取編碼爲頁面內容編碼,防止亂碼
        return r.text
    except:
        return "發生異常"
if __name__ == "__main__":
    url="http://www.baidu.com"
    print(getHtmlText(url))

經過r.raise_for_status()以及try--except捕捉訪問異常cookie


requests.requests控制訪問的參數

參數名 說明
params 字典或字節序列,做爲參數增長到url中
data 字典,字節序列或文件對象,做爲Request的內容
json JSON格式的數據,做爲Request的內容
headers 字典,HTTP定製頭(模擬瀏覽器進行訪問)
cokies 字典或CpplieJar,Request中的cookie
auth 元祖,支持HTTP認證功能
files 字典類型,傳輸文件
timeout 設定超時時間,秒爲單位
proxies 字典類型,設定訪問代理服務器,能夠增長登錄認證,防止爬蟲反追蹤
allow_redirects True//False,默認爲True,重定向開關
stream True/False,默認爲True,獲取內容當即下載開關
verify True/False,默認爲True,認證SSL證書開關
cert 本地SSL證書路徑"""

params參數的例子:
例:kv={'key1':'value','key2':'value2'} r=requests.request('GET','http://python123.io/ws',params=kv) print(r.url)
輸出爲:http://python.io/ws?key1=value1&key2=value2網絡

各方法語法以及須要的控制參數

語法 可選額外控制參數
requests.get(url, params=None, **kwargs) 12
requests.head(url, **kwargs) 12
requests.post(url, data=None, json=None, **kwargs) 12
requests.put(url, data=None, **kwargs) 12
requests.patch(url, data=None, **kwargs) 12
requests.delete(url, **kwargs) 12
相關文章
相關標籤/搜索