Python 网络爬虫笔记1 -- Requests库
生活随笔
收集整理的這篇文章主要介紹了
Python 网络爬虫笔记1 -- Requests库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 網絡爬蟲筆記1 – Requests庫
Python 網絡爬蟲系列筆記是筆者在學習嵩天老師的《Python網絡爬蟲與信息提取》課程及筆者實踐網絡爬蟲的筆記。
課程鏈接:Python網絡爬蟲與信息提取
參考文檔:
Requests 官方文檔(英文)
Requests 官方文檔(中文)
Beautiful Soup 官方文檔
re 官方文檔
Scrapy 官方文檔(英文)
Scrapy 官方文檔(中文)
一、Requests庫安裝
介紹: Requests庫主要用來獲取HTML網頁文件
pip 安裝:
pip install requests導入模塊:
import requests測試:
import requests# 訪問百度首頁 r = requests.get('http://www.baidu.com') # 連接狀態,連接成功為200 print(r.status_code) # 百度首頁內容,html print(r.text)二、方法
1、request() – 構造請求
函數原型:
request(method, url, **kwargs)參數:
- method:請求的方法,有:‘GET’,‘HEAD’,‘POST’,‘PUT’,‘PATCH’,‘DELETE’
- url:請求的URL鏈接
- **kwargs: 13個可選參數
- params: 字典或字節序列,作為參數增加到url中
- data:字典、字節序列或文件對象,作為Request的內容
- json:JSON格式的數據,作為Request的內容
- headers: 字典,HTTP定制頭
- cookies:字典或CookieJar,Request中的cookie
- files:字典類型,傳輸文件
- auth:元組,支持HTTP認證功能
- timeout: 設定超時時間,單位為秒
- allow_redirects:True/False,默認為True,重定向開關
- proxies: 字典類型,設定訪問代理服務器,可以增加登錄認證
- verify:True/False,默認為True,認證SSL證書開關
- stream:True/False,默認為True,獲取內容立即下載開關
- cert: 本地SSL證書路徑
返回: Response 對象,有以下屬性和方法
- status_code:HTTP請求的返回狀態,200表示連接成功,404表示失敗
- text:HTTP響應內容的字符串形式,即rl對應的頁面內容
- encoding:從HTTP header中猜測的響應內容編碼方式,如果header中不存在charset則認為編碼為ISO‐8859‐1,也是text解碼的編碼格式
- apparent_encoding:從內容中分析出的響應內容編碼方式,當header中不存在charset時,encoding應賦值為apparent_encoding
- content:HTTP響應內容的二進制形式
實例:
import requests# request 使用'GET'方法創建連接,獲得http://python123.io首頁的內容 r = requests.request('GET', 'http://python123.io/index') print(r.text)2、get() – 獲取HTML網頁
函數原型:
get(url, params=None, **kwargs)參數:
- url:擬獲取頁面的url鏈接
- params:url中的額外參數,字典或字節流格式
- **kwargs:其它的12個控制訪問的參數
返回: Response 對象
實例:
import requests# 修改url鏈接實現登入操作 kv = {'email': 'xxxx@qq.com', 'password': 'xxxx'} r = requests.get('http://python123.io/index/login', params=kv) print(r.url) => https://python123.io/index/login?email=xxxx%40qq.com&password=xxxx# 設置超時時間 r = requests.get('http://www.baidu.com', timeout=10)# 設定訪問代理服務器 pxs = { 'http': 'http://user:pass@10.10.10.1:1234' 'https': 'https://10.10.10.1:4321' } r = requests.get('http://www.baidu.com', proxies=pxs)3、head() – 獲取HTML網頁頭信息
函數原型:
head(url, **kwargs)參數:
- url:擬獲取頁面的url鏈接
- **kwargs:12個控制訪問的參數
返回: Response 對象
實例:
import requests# 只獲取HTML網頁的頭信息 r = requests.head('https://www.baidu.com') print(r.headers)4、post() – 向HTML網頁提交POST請求
函數原型:
post(url, data=None, json=None, **kwargs)參數:
- url:擬更新頁面的url鏈接
- data:字典、字節序列或文件,Request的內容
- json:JSON格式的數據,Request的內容
- **kwargs:其它的11個控制訪問的參數
返回: Response 對象
實例:
import requests# post請求,添加Request的內容 kv = {'key1': 'value1', 'key2': 'value2'} body = '主體內容' r1 = requests.post('https://www.baidu.com', data=kv) r2 = requests.post('https://www.baidu.com, data=body) r3 = requests.post('https://www.baidu.com', json=kv)# post請求,修改請求的頭信息,偽裝為瀏覽器請求 hd = {'user‐agent': 'Chrome/10'} r4 = requests.post('https://www.baidu.com', headers=hd)# post請求,傳輸文件 fs = {'file': open('data.xls', 'rb')} r4 = requests.post('https://www.baidu.com', files=fs)5、put() – 向HTML網頁提交PUT請求
函數原型: 必須將URL位置中所有字段一并提交到URL,未提交字段被刪除
put(url, data=None, **kwargs)參數:
- url:擬更新頁面的url鏈接
- data:字典、字節序列或文件,Request的內容
- **kwargs:其它的12個控制訪問的參數
返回: Response 對象
6、patch() – 向HTML網頁提交局部修改請求
函數原型: 僅需提交URL位置中要修改的局部信息,節省網絡帶寬
patch(url, data=None, **kwargs)參數:
- url:擬更新頁面的url鏈接
- data:字典、字節序列或文件,Request的內容
- **kwargs:其它的12個控制訪問的參數
返回: Response 對象-
7、delete() – 向HTML頁面提交刪除請求
函數原型:
delete(url, **kwargs)參數:
- url:擬刪除頁面的url鏈接
- **kwargs:12個控制訪問的參數
返回: Response 對象
三、爬取網頁的通用代碼框架
Requests庫異常:
| requests.ConnectionError | 網絡連接錯誤異常,如DNS查詢失敗、拒絕連接等 |
| requests.HTTPError HTTP | 錯誤異常 |
| requests.URLRequired | URL缺失異常 |
| requests.TooManyRedirects | 超過最大重定向次數,產生重定向異常 |
| requests.ConnectTimeout | 連接遠程服務器超時異常 |
| requests.Timeout | 請求URL超時,產生超時異常 |
拋出異常的方法:
requests.raise_for_status():如果不是200,產生異常requests.HTTPError
爬取網頁框架:
import requestsdef get_html_text(url):try:r = requests.get(url, timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return '產生異常'if __name__ == '__main__':url = 'http://www.baidu.com'print(get_html_text(url))總結
以上是生活随笔為你收集整理的Python 网络爬虫笔记1 -- Requests库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ionic 修改组件默认样式_开源Mag
- 下一篇: Python 参考文档