都是特別基礎的實例,每個用例都有他的意義。例子來源:《中國大學慕課》,北京理工大學嵩天老師的,Python爬蟲課程。看這篇文章之前,最好看一下Requests庫的詳細介紹。Python爬蟲入門——Requests庫
1.爬取京東商品頁面的框架
import requests
url="https://item.jd.com/100004706522.html"
try:
r=requests.get(url)
r.raise_for_status() #檢查返回狀態碼是否爲200
r.encoding=r.apparent_encoding #選擇正確編碼方式
print(r.text[:1000]) #因爲頁面代碼比較多,所以這裏就只選擇性的輸出
except:
print("error")
2. 爬取亞馬遜商品頁面的框架
亞馬遜商品頁面的爬取,如果按照上邊的京東案例,會報錯。因爲亞馬遜對爬蟲做了限制,就是請求報文頭中的User-Agent字段。所以我們要對User-Agent字段進行改變。
import requests
url = "https://www.amazon.cn/dp/B00J7E381S?ref_=Oct_DotdV2_PC_2_GS_DOTD_f0f9ddb1&pf_rd_r=269HMTWP7R5ZPFRGY17V&pf_rd_p=8c48638a-3752-448a-8685-5a17153fb132&pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=desktop-2"
try:
kv = {'user-agent':'Mozilla/5.0'} #更改請求報文頭部信息
r=requests.get(url,headers=kv)
print(r.request.headers) #打印請求頭
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text)
except:
print("爬取失敗")
3. 百度搜索關鍵詞提交
修改params參數提交關鍵詞
百度的關鍵詞接口:http://www.baidu.com/s?wd=keyword
360的關鍵詞接口:http://www.so.com/s?q=keyword
import requests
keyword = "Python"
try:
kv = {'wd':keyword}
r = requests.get("http://www.baidu.com/s",params=kv)
print(r.request.url) #發送的url地址
r.raise_for_status()
print(len(r.text)) #長度
except:
print("爬取失敗")
4.圖片的爬取和存儲
結合os庫和文件操作的使用。包括視頻、文件、圖片等,都可以用類似的方法來獲取。
import requests
import os
url = "https://image.ijq.tv/201501/31/13-57-25-65-12.jpg"
root = "E:/pics/"
path = root+url.split('/')[-1] #文件名默認是: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:
#wb含義:以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,
#並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
f.write(r.content)
f.close()
print("文件保存成功")
else:
print("文件已存在")
except :
print("爬取失敗")
5.IP查詢
import requests
url ="http://m.ip138.com/ip.asp?ip="
try:
r=requests.get(url+'202.204.80.112') #這裏填寫你想要查詢的IP地址
r.raise_for_status()
r.encoding=r.apparent_encoding
print(r.text[-500:]) #最後500個
except :
print("爬取失敗")
6.總結
requests.get()方法獲取的實際上就是頁面的html代碼。你可以隨便打開一個網頁,右擊,點擊查看網頁源代碼。Requests庫只是簡單的獲取網頁信息,下面將要講解獲取信息之後,如何提取自己想要的內容。
還在上學階段,才疏學淺,文章如有不當之處,還請多多指教~~ (●′ω`●)