pip install requests
requests.request() 支撐全部的基礎方法
requests.get()
requests.head()
requests.post()
requests.put()
requests.patch()
requests.delete()
r = requests.get( url )
r是一個Response對象, 包含爬蟲返回的內容html
url的Requestnode
requests.get(url, params=None, **kwargs)python
基本操做方法json
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
status_code小程序
HTTP請求的返回狀態, 200表示成功瀏覽器
text服務器
頁面內容網絡
encodingapp
根據header猜想的內容編碼方式框架
apparent_encoding
從內容中分析出來的編碼方式
content
HTTP相應的二進制形式
ConnectionError
網絡連接錯誤, 例如DNS查詢失敗, 拒絕連接等
HTTPError
HTTP錯誤
URLRequires
衝過最大重定向次數
ConnectTimeout
連接超時異常, 僅僅是連接的時候的時間超出
Timeout
url請求超時, 是這個過程的時間超出
通用代碼框架以下
注意: 該文件不能命名爲requests.py
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.python.org"
print(getHTMLText(url))
HTTP超文本傳輸協議
URL格式:
http://host[:port][path]
host是合法的主機域名或者IP地址
port是端口, 默認是80
path是資源路徑
對資源的操做
GET 獲取資源
HEAD 得到資源的相應消息報告, 也就是資源的頭部
POST 請求資源後附加的新數據
PUT 存儲一個資源, 覆蓋原資源(所有更新)
PATCH 局部更新
DELETE 刪除資源
requests庫的方法對應的就是HTTP的操做
requests庫的核心方法是 requests.request()方法
其中method就是對應的 GET; HEAD; POST; PUT; PATCH; DELETE; OPTIONS
其中的OPTIONS是用於與服務器交互得到配置的方法
關於kwargs
params = 字典, 字節序列
該params會拆解成鍵值對放到url以後當作提交的參數
data = 字典, 字節序列, 文件對象
做爲requests的內容
json = json格式數據
做爲requests的內容
headers = 字典
HTTP定製頭部, 諸如修改user-agent來假裝成某個瀏覽器
auth = 元組
支持HTTP的認證功能
files = 字典
傳輸文件
timeout = 數字
超時時間, 秒爲單位
proxies = 字典類型
設定訪問的代理服務器, 增長登陸認證
allow_redirects = True/False
重定向開關, 默認True
stream = True/False
內容當即下載開關, 默認True
verify = True/False
認證ssl證書開關, 默認True
cert 本地ssl證書路徑
其他的方法只是將經常使用的參數設爲默認參數了, 基本使用功能不變
get(url, params=None, **kwargs):
head(url, **kwargs):
post(url, data=None, json=None, **kwargs):
put(url, data=None, **kwargs):
patch(url, data=None, **kwargs):
delete(url, **kwargs):
options(url, **kwargs):
最基本的獲取京東某MAC的頁面
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'weihuchao'
import requests
url = "https://item.jd.com/2060618.html"
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失敗")
設置User-Agent來突破網站的限制
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'weihuchao'
import requests
url = "https://www.amazon.cn/Kindle%E7%94%B5%E5%AD%90%E4%B9%A6/b/ref=sv_kinc_3?ie=UTF8&node=116169071"
try:
kv = {'user-agent':'Mozilla/5.0'}
r = requests.get(url, headers=kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[1000:2000])
except:
print("爬取失敗")
經過分析網站的連接形式, 獲得網站的 網站+參數 的格式
利用get()方法中的params來設置傳入的參數
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'weihuchao'
import requests
keyword = "Python"
url = "http://www.baidu.com/s"
try:
kv = {'wd': keyword}
r = requests.get(url, params=kv)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失敗")
利用requests庫來下載圖片
要點是找到網絡圖片的地址
得到的requests對象的content值就是文件的內容
經過rb的讀寫模式能夠實現文件的存儲
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'weihuchao'
import requests
import os
url = "http://edu-image.nosdn.127.net/3321D6673EB82C94D08E1B80E8344166.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)
f.close()
print("保存文件成功")
else:
print("文件已存在")
except:
print("爬取失敗")