日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 网络爬虫笔记1 -- Requests库

發布時間:2025/3/12 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.URLRequiredURL缺失異常
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库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。