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

歡迎訪問 生活随笔!

生活随笔

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

python

python爬虫学习DAY1_Requests库

發布時間:2024/1/18 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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有限制的網站

import requests url = "https://www.amazon.cn/dp/B008H4SLV6?ref_=Oct_DLandingSV2_PC_8c66f1d9_1&smid=A2EDK7H33M5FFG" def maskHTML(url):try:kv = {'user-agent':'Mozilla/5.0'}r = requests.get(url,headers=kv)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.text[1000:2000]except:return "error" print(maskHTML(url)) input()

以這個訪問亞馬遜網站商品頁面的代碼為例:

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库的全部內容,希望文章能夠幫你解決所遇到的問題。

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