<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.request() | 構造請求,支撐以下的基礎方法 |
2.get() | 獲取HTML頁面的主要方法,對應於http的get |
3.head() | 獲取HTML頁面的頭部資訊的主要方法,對應於http的head |
- | |
4.post() | 向HTML提交post請求的方法,對應於http的post |
- | |
- | |
5.put() | 向HTML提交put請求的方法,對應於http的put |
6.patch() | 向HTML提交區域性修改的請求,對應於http的patch |
7.delete() | 向HTML提交刪除請求,對應於http的delete |
以下程式碼是描述的request方法中的13個控制存取引數:
import requests # **kwargs:控制存取的引數,均為可選項,不僅僅是針對request,其他六中方法依舊適用 # params:字典或位元組序列,作為引數增加到URL中,可以通過該引數篩選資料 kv = {"key1":"value1","key2":"value2"} r = requests.request('GET','http://python123.io/ws',params=kv) print(r.url) # https://python123.io//ws?key1=value1&key2=value2 # data:字典、位元組序列或檔案物件,作為Request的內容;提交時,作為資料內容新增到當前的連線下 kv = {"key1":"value1","key2":"value2"} r = requests.request('POST','http://python123.io/ws',params=kv) body = '主體內容' r = requests.request('POST','http://python123.io/ws',params=body) # json:JSON格式的資料,作為Request的內容 kv = {"key1":"value1"} r = requests.request('POST','http://python123.io/ws',json=kv) # headers:字典,HTTP客製化頭,模擬需要的瀏覽器來進行存取 hd = {"user-agent":"Chrome/10"} r = requests.request('POST','http://python123.io/ws',headers=hd) # cookies:字典或CookieJar,Request中的cookie # auth:元組,支援HTTP認證功能 # files:字典型別,傳輸檔案;將某個檔案提交到連線上 fs = {"file":open('data.xls','rb')} r = requests.request('POST','http://python123.io/ws',file=fs) # timeout:設定超時時間,秒為單位;在規定的時間內沒有接收到響應將會顯示timeout異常 r = requests.request('POST','http://www.baidu.com',timeout=10) # proxies:字典型別,設定存取代理伺服器,可以增加登入認證 pxs = {'http':'http://user:pass@10.10.10.1:1234', #當我們進入HTTP協定的網站時增加登入認證 'https':'https://10.10.10.1.4321' } #當我們進入HTTPS協定的網站時,直接使用代理伺服器的IP地址;可以有效掩蓋爬蟲的原IP地址 r = requests.request('GET','http://python123.io/ws',proxies=pxs) # allow_redirects:True/False,預設為True,重定向開關 # stream:True/False,預設為True,獲取內容立刻下載的開關 # verify:True/False,預設為True,認證SSL證書開關 # cert:本地SSL證書路徑
status_code | HTTP請求的返回狀態碼,200表示成功,400表示失敗 |
text | HTTP響應內容的字串形式,即URL對應的頁面內容 |
encoding | 從HTTPheader中猜測的響應內容編碼方式 |
- | |
apparent_encoding | 從內容中分析出的響應內容編碼方式(備選編碼方式) |
- | |
content | HTTP響應內容的二進位制形式 |
import requests #構造一個向伺服器請求資源的Response物件 r = requests.get(url="http://www.baidu.com") print(r.status_code) #列印請求狀態碼 #200 print(type(r)) #列印請求物件型別 #<class 'requests.models.Response'> print(r.headers) #列印請求物件的頭部資訊 #{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sat, 27 Jun 2020 09:03:41 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:32 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'} print(r.text) print(r.encoding) #ISO-8859-1 print(r.apparent_encoding) #備用編碼utf-8 r.encoding = "utf-8" print(r.text)
直接解析會出現亂碼,將字元設為apparent_encoding時會結局問題。
try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "產生異常!"
作用:r.raise_for_status()函數
判斷當前請求返回狀態碼,當返回狀態碼不為200時,產生異常並能夠被except捕獲
import requests # (定義方法)封裝函數 def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "程式碼錯誤,產生異常!" if __name__ =="__main__": url = "http://www.baidu.com" print(getHTMLText(url)) #正常顯示爬取的頁面資訊 if __name__ =="__main__": url = "www.baidu.com" #缺失了 print(getHTMLText(url)) #程式碼錯誤,產生異常!
requests.ConnectionError | 網路連線錯誤異常,如DNS查詢失敗、拒絕連線等 |
requests.HTTPError | HTTP錯誤異常 |
requests.URLRequired | URL缺失異常 |
requests.TooManyRedirects | 超過最大重定向次數,產生重定向異常 |
requests.ConnectTimeout | 連線遠端伺服器超時異常 |
requests.Timeout | 請求URL超時,產生超時異常 |
import requests # (定義方法)封裝函數 def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "程式碼錯誤,產生異常!" if __name__ =="__main__": url = "http://www.baidu.com/robots.txt" print(getHTMLText(url)) #正常顯示爬取的頁面資訊,顯示出robots協定對於不同型別爬蟲的限制
1.爬取京東商品資訊
在爬取後,我們發現在控制檯中返回了帶有login?
的一個href,並沒有具體的資訊內容。但是在爬取主頁時,可以直接獲取主頁具體資訊。個人認為是由於無法識別是否已經登陸而導致的,後續學習中會跟進知識點及解決方法。(若有大佬會的,感謝評論!)
2.爬取網上圖片並儲存
import requests import os url = "http://image.ngchina.com.cn/2019/0523/20190523103156143.jpg" root = "F:/圖片/" #根目錄 path = root + url.split('/')[-1] #以最後一個/後的文字命名 try: if not os.path.exists(root): #如果不存在根目錄檔案,則建立根目錄資料夾 os.mkdir(root) #該方法只能建立一級目錄,如要建立多層,可以遍歷迴圈建立 if not os.path.exists(path): r = requests.get(url) with open(path,'wb') as f: f.write(r.content) #r.content返回的是2進位制編碼,將其寫入 f.close() print("檔案已成功儲存!") else: print("檔案已存在~") except: print("爬取失敗!!!")
到此這篇關於Python爬蟲Requests庫的使用詳情的文章就介紹到這了,更多相關Python Requests庫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45