一、Requests庫簡介
Requests模塊是發起http請求最常見的模塊。Requests自稱「http for Humans」,說明使用更簡潔方便。
Requests繼承了urllib的所有特性,Requests支持http連結保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應內容的編碼,支持國際化的url和post數據自動編碼。
Requests的底層實現其實就是urllib3.
開源地址:http://github.com/kennethreitz/requests
中文文檔API:http://2.python-requests.org/zh_CN/latest/
安裝方式:
pip install requests
二、Requests模塊get請求
(一)、網絡請求
當客戶端發送一個請求,伺服器收到這個請求後就會將請求所對應的響應返回給客戶端,客戶端收到這個響應將其顯示出來,我們使用requests模塊其實就是在模仿哭護短和伺服器的這個過程。
客戶端在發送請求時主要有兩種請求的方法:get請求和post請求。
1、get請求:
get請求主要是從伺服器去獲取內容,大多輸的請求都是get請求。
2、post請求:
post請求是向伺服器提交一些內容,比如表單等。
(二)、使用requests發送get請求
1、導入requests模塊
import requests
2、發送請求,獲取響應
response=requests.get(
url=請求的url
headers=請求頭字典
params=請求參數字典
)
(三)、response對象的屬性
1、字符串響應的內容
response.text
2、二進位響應的內容
response.content
3、json響應的內容
response.json()
4、響應狀態碼
response.status_code
5、響應頭
response.headers
6、頁面內容亂碼問題
1)、設置正確的編碼方式
給response.encoding設置一個正確的編碼,requests模塊會自動根據設置的編碼來將伺服器響應的內容按照這個編碼成字符串,這時我們通過response.text欄位就可以獲取正確的頁面內容了
2)、通過response.content.decode("正確的編碼")方法來將而簡直內容按照提供的編碼方式編碼成unicode字符串,進而正確的顯示。
三、requests模塊post請求
(一)、post請求的使用方法
1、導入requests模塊
import requests
2、發送請求,獲取響應
response=requests.post(
url=請求的url
headers=請求頭字典
data=請求數據字典
)
四、爬蟲和法律
(一)、爬蟲背後的法律風險
我們都知道在爬取網上數據時,爬取個人信息是不合法的。
《中華人民共和國網絡安全法》 2016 年 11 月 7 日發布的《中華人民共和國網絡安全法》明確「個人信息」是指以電子或 者其他方式記錄的能夠單獨或者與其他信息結合識別自然人個人身份的各種信息,包括但不限於自然人的姓名、出生日期、身份證件號碼、個人生物識別信息、住址、電話號碼等,就網絡服務中的個人信息保護問題作出系統規定如下:
1、保護個人信息: 網絡產品、服務具有收集用戶信息功能的,其提供者應當向用戶明示並取得同意;涉及 用戶個人信息的,還應當遵守本法和有關法律、行政法規關於個人信息保護的規定。
2、合法收集使用個人信息: 網絡運營者收集、使用個人信息,應當遵循合法、正當、必要的原則,公開收集、使用 規則,明示收集、使用信息的目的、方式和範圍,並經被收集者同意。不得收集與其提供的 服務無關的個人信息,不得違反法律、行政法規的規定和雙方的約定收集、使用個人信息, 並應當依照法律、行政法規的規定和與用戶的約定,處理其保存的個人信息。
3、不得向他人提供個人信息: 網絡運營者不得洩露、篡改、毀損其收集的個人信息,未經被收集者同意,不得向他人 提供個人信息,但經過處理無法識別特定個人且不能復原的除外。
《規範網際網路信息服務市場秩序若干規定》
1、搜集須經許可:未經用戶同意,不得搜集與用戶相關、能夠單獨或者與其他信息結 合識別用戶的信息(「用戶個人信息」),但法律法規另有規定除外;
2、限定搜集範圍和用途:經用戶同意搜集用戶個人信息的,應當明確告知搜集和處理 用戶個人信息的方式、內容和用途,不得收集其提供服務所必需以外的信息,不得將用戶個 人信息用於其提供服務之外的目的;
3、用戶個人信息保障:網際網路信息服務提供者應當加強系統安全防護,妥善保管用戶 個人信息,未經用戶同意,不得向他人提供用戶上載信息,但是法律法規另有規定的除外。
(二)、爬蟲怎麼做比較好
1、如果爬蟲獲取信息,是為了證明被爬公司的數據造假,其獲取的數據也都是通過公開渠道可以查詢的,那麼,在獲取信息後公布於眾的行為並不違法,也不侵犯被爬公司的民事權益。但是,如果你爬取公開免費的信息,是用來進行違法操作,比如造假、誹謗等,就有隱患了。
2、如果你利用爬蟲獲取其他公司的公開信息數據,用於自身公司的經營。而被爬公司 的信息是投入了大量人力、財力,經過常年積累獲得的,並且被爬公司本身也採取了反爬措 施。這種情況下,雖然信息是公開的,但信息本身具有較高的商業價值,能夠給使用者帶來 商業利益,此時的爬蟲也是違法的。
3、如果你未經平臺授權,強行突破反爬措施,導致被爬網站的運行受到嚴重影響,這 種行為明顯是違法的。
4、如果你是第三方應用,想要通過開放平臺獲取用戶信息時,更要注意授權問題。從 用戶對平臺的授權、平臺對第三方的授權、再到用戶對第三方的授權,三重關卡都要通過才合法。