python爬虫学习DAY1_Requests库
Requests庫
學習自mooc的python爬蟲課程后的一些小整理。
本文將從課程給出的幾個實例入手整理,并最后附有摘自python網絡爬蟲學習筆記(一)Request庫的部分對request庫函數及可選的控制訪問方式(kwargs)加以總結
eg1:頁面爬取框架
import requests def getHTMLText(url):try:r = requests.get(url)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return"error" if __name__ == "__main__":url = "http://www.baidu.com"v調用(訪問sublime text support)
print(getHTMLText("http://www.sublimetext.cn/support")) input()輸出結果
eg2:訪問對robots有限制的網站
以這個訪問亞馬遜網站商品頁面的代碼為例:
kv = {'user-agent':'Mozilla/5.0'} r = requests.get(url,headers=kv)不同點就是這兩行,
get及request的其他函數都有幾個參數,以get為例:get(url,params=none,**kwarys),可用來傳遞url參數,將在幾個例子后做總結一起比較。
eg3:對搜索引擎關鍵字的提交
import requests keyword = "python" def search(keyword):try:kv = {'wd':keyword}r = requests.get("http://www.baidu.com/s",params=kv)r.raise_for_status()return len(r.text)except:return "error" print(search(keyword)) input()
可以看到,百度對關鍵字的搜索是通過url最后wd=“XXX”部分來進行的
所以我們可以用requests對url進行修改從而達到搜索的目的
eg4:圖片爬取與儲存
import requests import os url = "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1398687258,1630323367&fm=11&gp=0.jpg" root = "G://python//" path = root + url.split('/')[-1] def saveimg(root,path,url):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)f.close()return "success"else:return "existed"except:return "failed" print(saveimg(root,path,url)) input()若需要從網頁上保存圖片,我們需要有圖片的網址(url),以及保存到本地的根目錄(root),及文件名(path),所以我們構造的函數saveimg需有這三個函數(當然,如果指定了根目錄和文件名,就只需傳url)
with open(path,'wb') as f:f.write(r.content)f.close()這段是把圖片轉換為二進制形式寫入文件
小結:
1.七個函數
庫中支持REQUEST, GET, HEAD, POST, PUT, PATCH, DELETE共7個方法。其中REQUEST方法為基礎方法,其它六種方法均通過調用REQUEST方法實現。為了編寫程序的便利性,提供了這額外6個方法。我們首先看一下這6個方法的含義,及其在庫中對應的函數:
GET:請求指定的頁面信息,對應requests.get()
HEAD:只請求頁面的頭部,對應requests.head()
POST:請求服務器接收所指定的文檔作為對所標識的URI的新的從屬實體,對應requests.post()
PUT:從客戶端向服務器取代指定的文檔的內容,對應requests.put()
PATCH:與PUT功能類似,不同之處在于PUT提交信息的方式是截斷的,而PATCH可以進行局部更新。因此與PUT相比,在某些情況下,PATCH可以節省網絡帶寬。對應requests.patch()
DELETE:請求服務器刪除指定頁面,對應requests.delete()
2.函數參數詳解
requests.request(method, url, **kwargs)
requests.get(url, params = None, **kwargs)
requests.head(url, **kwargs)
requests.post(url, data = None, json = None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.delete(url, **kwargs)
其中method為請求方式,對應為’GET’, ‘HEAD’, ‘POST’, ‘PUT’, ‘PATCH’, ‘delete’, 'OPTIONS’七種方式。
**kwargs為13個可選的控制訪問方式,包括:
params:字典或字節序列,可以作為參數增加到url中
data:字典、字節序列或文件對象,作為Request的內容
json:JSON格式的數據,作為Request的內容
headers:字典,為HTTP定制頭
cookies:字典或CookieJar,Request中的cookie
auth:元組類型,支持HTTP認證功能
files:字典類型,用于傳輸文件
timeout:設定超時時間(以秒為單位)
proxies:字典類型,設定訪問代理服務器,可以增加登錄認證
allow_redirects:True/False,默認為True,為重定向開關
stream:True/False,默認為True,獲取內容立即下載開關
verify:True/False,默認為True,認證SSL證書開關
cert:本地SSl證書路徑
總結
以上是生活随笔為你收集整理的python爬虫学习DAY1_Requests库的全部內容,希望文章能夠幫你解決所遇到的問題。