學習原因:
爬蟲是一門有趣的技術,它可以讓我們感受到程序的魅力,給我們帶來視覺衝擊感和成就感,可以極大地提高我們對編程的學習興趣。
——————
願你我,都能:
遵循君子協議
合理使用技術
提高學習興趣
一. 君子協議
爲什麼每次被抓的都有你~
我們應該自覺遵守君子協議(爬蟲協議的俗稱),掌握爬蟲的技術。
在對應網址之後增加 /robots.txt, 即可查看爬蟲協議,知道哪些頁面是不可爬取的,爬蟲協議具體內容可自行百度瞭解。
例如: https://www.baidu.com/robots.txt
二. 用戶代理
僞裝術,我是平民~
網站可以識別出是程序還是瀏覽器訪問的, 具有反爬蟲措施, 所以需要進行僞裝, 僞裝需要添加用戶代理(User-Agent)
查找方法1: 網址中輸入 about:version
查找方法2: 查看請求頭的中User-Agent
操作流程:在任意頁面,比如:百度搜索頁,首先點一下鼠標右鍵,點擊檢查。接着,點擊Network,點擊頁面刷新,在Name下點擊任意一條,比如:www.baidu.com。最後,在Headers中滑到最下方,找到User-Agent,複製用戶代理。
三,爬蟲代碼:
流程:
- 明確目標,爬取王者榮耀全皮膚;
- 分析過程,進網站通過抓包瞭解皮膚圖片的存儲位置;
- 拆解步驟,找出皮膚圖片的存儲規律,把實現步驟拆解成若干個;
- 逐步運行,獲取需要的參數,完善代碼;
注意事項:
- 添加用戶代理,進行僞裝
- 新建同級文件夾pic,方便存儲皮膚圖片;
- 加快運行效率,可參考提高爬蟲效率的技術
- 具體操作流程,可參考其他文章資源,此處只有效果
文件構架:
# 第一層:
mySpider(總文件夾,用來練習爬蟲技術)
# 第二層:
--pic(文件夾,用來儲存皮膚圖片)
--rongyao.py(python文件,用來爬取榮耀全皮膚)
代碼:
運行條件:代碼中添加用戶代理,總文件夾下新建pic文件夾(要與python文件在同一級哦)。
# 1.導入所需模塊
import requests
# 2.讀取json文件
url = 'http://pvp.qq.com/web201605/js/herolist.json'
headers = {'User-Agent':'此處省略,替換成自己的用戶代理'} # 添加用戶代理
response = requests.get(url, headers=headers)
json_list= response.json()
# print(len(json_list)) # 英雄總數量:95個英雄
# print(json_list) # 打印結果,瞭解json_list的構造
try:
# 3.提取json文件,下載圖片
for m in range(len(json_list)):
# 英雄編號
hero_num = json_list[m]['ename']
# 英雄名稱
hero_name = json_list[m]['cname']
# 獲取皮膚列表
skin_name = json_list[m]['skin_name'].split('|')
# 統計皮膚數量
skin_count = len(skin_name)
print('英雄名稱:',hero_name,' 皮膚數量:',skin_count) # 打印英雄的皮膚數量
# 遍歷每一個圖片網址
for i in range(1, skin_count + 1):
# 網址拼接, 構造完整的圖片網址
url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' # 圖片網址固定前綴
url_pic = url + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(i) + '.jpg'
# 獲取圖片信息
picture = requests.get(url_pic).content
# print(picture) # 打印圖片網址
# 下載圖片 文件路徑爲: pic/英雄名-皮膚名.jpg (需要新建pic文件夾)
with open('pic/'+ hero_name + ' - ' + skin_name[i - 1] + '.jpg', 'wb') as f:
f.write(picture)
except KeyError as e:
# 捕獲異常:解決皮膚名稱全部打印完成後會報錯的問題
print('程序執行完畢!')
最終結果:
四,python文件打包技術:
已將python文件轉爲exe可執行文件,下載後運行exe文件即可,例如:我們的電腦桌面的那些應用就是一個個exe文件。其中使用的python文件打包技術(下面提供跳轉鏈接),比較簡單,成功後可用像電腦軟件一樣直接運行在後臺,也方便分享給小夥伴哦。
>> 爬蟲程序下載鏈接,如下:
鏈接:https://pan.baidu.com/s/1L7DTYzkv_zRqX9zyAEZwhw
提取碼:0kzw
複製這段內容後打開百度網盤手機App,操作更方便哦
由於多人頻繁使用,該程序可能已失效,在這僅作參考,建議自行將python文件打包成可執行文件。
想要學習python文件打包技術,點擊右邊的鏈接即可:python文件打包技術
五,提高爬蟲效率的方法
普通的代碼爬取數據的效率較低,若數據變多,那麼等待時間會大大加長,如何縮短爬取數據的時間,我們可以瞭解一些提高爬蟲效率的方法。
以上實現了文件打包,直接在電腦上運行即可,無需使用python編輯器~
更多方法請點擊跳轉:提高爬蟲效率的方法