前言
今天給大家的介紹Python爬取海量美女圖片並保存本地。
開發工具
Python版本: 3.8
相關模塊:
requests模塊
multiprocessing模塊
urllib模塊
json模塊
環境搭建
安裝Python並添加到環境變量,pip安裝需要的相關模塊即可。
頁面獲取
這裏我們以虎牙爲例,進入首頁
選擇更多,但是如果你需要的在上面可以直接選擇也可以,比如王者榮耀、英雄聯盟等,我們選擇【顏值】,進入顏值頁面
來到顏值頁面後,我們F12打開開發者工具或者鼠標右擊選擇檢查,選擇Network進行網絡請求和響應的查看。我們的目的是獲取海量的美女圖片(建議谷歌瀏覽器)
將頁面拉到底部,進行翻頁。發現地址欄沒有變化還仍然是:
huya.com/g/2168
如果大家遇到這種情況,就要考慮是不是使用ajax進行異步請求了。在Network中選擇XHR,進行異步請求的篩選。
點開上圖中圈起來的鏈接,發現在response處是一個json返回結果
接着就把此鏈接拷貝出來,進行分析:
1.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=1
2.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=2
3.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=3
4.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=4
找到了規律,頁碼數對應上了下面我們進行代碼實現
代碼實現
# 要爬取的網址
# page: 頁碼
url = f'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page={page}'
# 開始爬取虎牙的妹子
response = requests.get(url, headers=headers)
content = response.text
result = content[len('getLiveListJsonpCallback('): -1]
# json解析: json字符串 => python字典
result2 = json.loads(result)
# print(result2)
# 當前頁的所有妹子
meizi_list = result2['data']['datas']
for meizi in meizi_list:
nick = meizi['nick'] # 暱稱
img = meizi['screenshot'] # 圖片url
# print(nick, img)
# 下載圖片,並以暱稱作爲圖片名
try:
request.urlretrieve(img, f'huya/{page}-{nick}.png')
request.urlcleanup() # 清空緩存
print(f'{page}-{nick}.png 下載完成!')
except:
print('error:', nick)
結果展示
最後
今天的分享到這裏就結束了 ,感興趣的朋友也可以去試試哈
對文章有問題的,或者有其他關於python的問題,可以在評論區留言或者私信我哦
覺得我分享的文章不錯的話,可以關注一下我,或者給文章點贊(/≧▽≦)/