醬醬~小編又來啦~😊
先來回顧一下什么是requets庫吧~
Requests庫是用Python編寫的,基於urllib,采用Apache2 Licensed開源協議的HTTP庫;相比urllib庫,Requests庫更加方便,
可以節約我們大量的工作,完全滿足HTTP測試需求;上篇文章講了requests庫中的基本方法,方法中有很多參數,我只針對
方法對比較常用的參數進行了簡單介紹,今天一起來看看所有的參數吧~
一、requests庫的13個控制訪問參數
1.params:形式:字典或字節序列,做為參數增加到url中
2.data:形式:字典或字節序列 或文件對象,做為Requests的內容,可反饋給服務器
3.json:形式:JSON格式的數據 做為Requests的內容,可反饋給服務器
(ps:科普JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定
的js規范)的一個子集,采用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交
換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。)
來自百度百科,更多信息請查詢https://baike.baidu.com/item/JSON/2462549?fr=aladdin
4.headers:形式:字典 HTTP定制頭
例如在亞馬遜上是不允許python爬取信息的,我們可以將該參數改成Mozilla/5.0(切記只是用於學習,而不是商用)
kv = {"User-Agent":'Mozilla/5.0'} #需要將用戶改為:Mozilla/5.0,亞馬遜拒絕python訪問
5.cookies:形式:字典或cookie Jar(從HTTP協議中解析得來)是Requests中的cookie
(ps:管理HTTP cookie值、存儲HTTP請求生成的cookie、向傳出的HTTP請求添加cookie的對象。整個cookie都存儲在內存中,
對CookieJar實例進行垃圾回收后cookie也將丟失。)
詳情請參考https://blog.csdn.net/levon2018/article/details/80558108
6.auth:形式:元組 支持HTTP的認證功能
7.files: 形式:字典類型用於向服務器傳輸文件
8.timeout:形式:數字 單位是s(秒)用於設置超時時間,防止爬取時間過長,無效爬取
9.prixies:形式:字典類型 設定訪問代理服務器,可以增加登錄認證。(防止爬蟲逆追蹤)
10.allow_redirects:形式:布爾類型(True or False)默認為True 重定向開關
11.stream:布爾類型(True or False)默認為Ture 獲取內容立即下載 開關
12.verify:布爾類型(True or False)默認為Ture 認證SSL證書開關
13.cert: 保存本地證書路徑
醬醬重點來啦~~我為大家精心准備了五個案例 敲黑板,只是學習目的,非商業哦~~
'''1-京東爬取
import requests
url1 = "https://item.jd.com/35683512021.html#crumb-wrap"
try:
r = requests.get(url1)
r.raise_for_status()
r.enconding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失敗")
2-亞馬遜爬取
import requests
url1 = 'https://www.amazon.cn/?_encoding=UTF8&ref_=nav_logo'
try:
kv = {"User-Agent":'Mozilla/5.0'} #需要將用戶改為:Mozilla/5.0,亞馬遜拒絕python訪問
r = requests.get(url1,headers = kv)
r.raise_for_status()
r.encoding = https://util.cnblogs.com/InsertCode.aspxr.apparent_encoding
print(r.text[1000:2000])
except:
print("爬取失敗")
3.1-百度搜索全代碼
import requests
keyword = 'Python'#搜索python 百度的關鍵詞接口是wd
try:
kv = {'wd':keyword}
r = requests.get('http://baidu.com/s',params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失敗")
3.2-360搜索全代碼360搜索全代碼
import requests
keyword = 'Python'#搜索python 360的關鍵詞接口是q
try:
kv = {'q':keyword}
r = requests.get('http://so.com/s',params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失敗")
#4.1-網絡圖片的存取
#用到文件操作,將圖片存為二進制(因為response屬性中的content是響應HTTP內容的二進制文件)
#存儲並不是想存到哪里就存到哪里,可以先用os庫查看當前python的工作目錄;代碼如下:
import os
print(os.getcwd())
#我的是:D:\python\practice\爬蟲學習(一般就在python環境中)
----------------
import os
print(os.getcwd())
#所以如果想存到其他盤或者路徑 一定先要更改當前工作路徑
os.chdir("D:/python")
#進行驗證
print(os.getcwd())
更改工作目錄成功 創建存儲路徑,並以二進制形式爬取網上圖片並保存到文件中
#先進行爬取,並驗證是否爬取成功
url1 = "http://image.ngchina.com.cn/2020/0213/20200213044154389.jpg"
import requests
r = requests.get(url = url1)
print(r.status_code)#狀態碼為200表示爬取成功
path = "D:\\python\\123.jpg" #一定要和網上的圖片格式一樣
with open(path,'wb')as f:#存儲文件
f.write(r.content)
#4.2爬取視頻 和爬取圖片類似 也需要查看當前工作目錄,根據是否要存儲在當前工作目錄來決定是否更改
#在存取視頻得時候只需要將想存取的位置的后綴從.jpg到.mp4即可
#還是將內容二進制保存在文件中
import os
print(os.getcwd())
path = "D://python//practice//爬蟲學習//123.mp4"
import requests
url = "http://www.ngchina.com.cn/statics/images/index_lunbo/ad_video_2.mp4"
r = requests.get(url)
print(r.status_code)
with open(path,'wb')as f:
f.write(r.content)
#ip地址歸屬的自動查詢
#首先要知道想查詢的網頁、視頻、圖片的ip地址是什么
#先登錄"https://site.ip138.com/www.dili360.com/"網站將想查詢的url轉換為ip地址
#可以通過這個網站 查詢到ip地址的歸屬地,我們就是用計算機代替人來做,
#相當於我們是模擬后台,幫助顧客知道歸屬地
#通過爬取"http://m.ip138.com/ip.asp?ip="+"IP地址"
#並截取獲取文本的后500字符就可以查詢到ip歸屬地
import requests
url = "http://m.ip138.com/ip.asp?ip="
try:
r = requests.get(url+"123.57.174.224")
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[-500:])
except:
print("爬取失敗")'''
--------------------------------------------------------分割線---------------------------------------------------------------
--------------------小編也是在學習哦,有錯誤或者想討論的歡迎大家在評論區積極評論喲~---------------------------
---------------代碼是我自己敲得哦,不要直接復制粘貼哦,一定動手自己試一試,才會學的更多------------------
