import requests
#
# #### request庫的get()方法####
# resp = requests.get("https://www.baidu.com")
# print(resp.status_code)? # 查看狀態(tài)碼200為成功,404為失敗
# print(resp.text)? # 打印HTML內(nèi)容,出現(xiàn)亂碼
# # 從HTTP的header 猜測的響應(yīng)內(nèi)容的編碼方式
# print(resp.encoding)? # 結(jié)果:ISO-8859-1
# # 從HTTP的內(nèi)容中 分析出響應(yīng)內(nèi)容的編碼方式
# print(resp.apparent_encoding)# 結(jié)果 :utf-8
# resp.encoding="utf-8"? # 改變編碼方式
# print(resp.text)? # 格式正常
# # resp.encoding? 如果header中不存在charset,則默認(rèn)編碼為 ISO-8859-1(不能識(shí)別中文)
# # resp.apparent_encoding? 根據(jù)網(wǎng)頁內(nèi)容分析出的編碼方式(備選)
#### 爬取網(wǎng)頁的通用代碼框架####
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()# 如果狀態(tài)碼不是200,引發(fā)HTTPError異常
? ? ? ? r.encoding=r.apparent_encoding
return r.text
except:
return "產(chǎn)生異常"
if __name__ =='__main__':
url="www.baidu.com"
? ? print(getHTMLText(url))# 產(chǎn)生異常
# 網(wǎng)絡(luò)圖片的爬取和存儲(chǔ)
import requests
import os
# 網(wǎng)絡(luò)圖片鏈接的格式:http://www.example.com/picture.jpg
url ="https://pic3.zhimg.com/80/v2-5b2d8d4f3109c2cb346f04cae6a5870e_1440w.jpg"
root ="D:/"
path =root+url.split("/")[-1]# 使用圖片原來的名字
try:
if not os.path.exists(root):# 判斷當(dāng)前根目錄是否存在
? ? ? ? os.mkdir(root)
if not os.path.exists(path):# 判斷文件是否存在
? ? ? ? r=requests.get(url)
with open(path,'wb')as p:
p.write(r.content)
p.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失敗")
import requests
# 亞馬遜商品頁面的爬取
# 通過headers字段,讓代碼模擬瀏覽器向亞馬遜服務(wù)器提供http請求
# 網(wǎng)站對于網(wǎng)絡(luò)爬蟲的限制
# 第一種:通過robos協(xié)議,告知爬蟲,那些東西可以訪問,那些不能訪問
# 第二種:通過判斷對網(wǎng)站訪問的HTTP頭來查看本次訪問是不是由于爬蟲引起的,網(wǎng)站一般接收的是由瀏覽器引發(fā)的http請求,
url = ("https://www.amazon.cn/dp/B00T2NGQW2/ref=s9_acsd_ri_bw_c2_x_0_i?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-3&pf_rd_r=RJSE6X6MYAPAP9JEM0T3&pf_rd_t=101&pf_rd_p=4602c871-ec9e-4679-90ba-1ddbdb46b754&pf_rd_i=144154071")
r = requests.get(url)
print(r.status_code)# 503
print(r.encoding)
r.encoding = r.apparent_encoding
# print(r.text)
print(r.request.headers)
kv={'User-Agent':'Mozilla/5.0'}# 瀏覽器身份標(biāo)識(shí)
url = ("https://www.amazon.cn/dp/B00T2NGQW2/ref=s9_acsd_ri_bw_c2_x_0_i?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-3&pf_rd_r=RJSE6X6MYAPAP9JEM0T3&pf_rd_t=101&pf_rd_p=4602c871-ec9e-4679-90ba-1ddbdb46b754&pf_rd_i=144154071")
r = requests.get(url,headers=kv)
print(r.request.headers)
print(r.status_code)
print(r.text[100:300])# 爬取字節(jié)范圍