使用python爬取taptap網(wǎng)站游戲截圖的步驟
今天使用python寫了一個簡單的爬蟲,用來下載taptap網(wǎng)站的游戲截圖。下面說下具體的實現(xiàn)方法。
在搜索框中搜索“原神”

打開瀏覽器的開發(fā)者選項,從詳情按鈕里面跳轉(zhuǎn)到游戲的頁面,點擊詳情之后,跳轉(zhuǎn)頁面

這時候看到,瀏覽器地址:https://www.taptap.com/app/168332,tap官網(wǎng)的域名加上app/和圖一的游戲id,可以使用re模塊正則表達式模塊從接口中獲取到這個id
x_ua = 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
def search(game_name):
"""根據(jù)游戲名搜索提取出游戲id"""
url = 'https://www.taptap.com/webapiv2/mix-search/v1/by-keyword'
data = {
'kw': f'{game_name}',
'X-UA' : x_ua
# 'X-UA': 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
}
r = requests.get(url=url, params=data)
pattern = re.compile('"type":"app","identification":"app:(.+?)"', re.S)
r1 = pattern.findall(r.text)
#從response中提取游戲id
return r1[0]
然后打開開發(fā)者選項觀察接口,可以從這個接口中獲取到游戲截圖的鏈接,

把數(shù)據(jù)json格式化一下,可以發(fā)現(xiàn)在data下,"screenshots"下的“orignal_url”就是截圖的鏈接。使用json.load轉(zhuǎn)換成字典,就可以比較方便的取出內(nèi)容了。

url = f'https://www.taptap.com/webapiv2/app/v2/detail-by-id/{search(game_name)}'
r = requests.get(url=url, params={'X-UA': x_ua})
data = json.loads(r.text)
#轉(zhuǎn)換為字典格式
original_url = data.get('data').get('screenshots')
#提取出截圖url
之后使用一個循環(huán)將圖片保存到本地
for i in original_url:
time.sleep(0.5)
game_original_url = i.get('original_url')
print(game_original_url, type(game_original_url))
respones = requests.get(game_original_url)
img = respones.content
file_name = game_original_url[-36: -4]
screenshots = os.path.join(os.path.dirname(__file__), f'screenshots/{game_name}')
if not os.path.exists(screenshots):
os.makedirs(screenshots)
file_path = os.path.join(screenshots, file_name)
with open(file_path + '.png', 'wb') as f:
f.write(img)
完整代碼:
import os
import requests
import json
import re
import time
x_ua = 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
def search(game_name):
"""根據(jù)游戲名搜索提取出游戲id"""
url = 'https://www.taptap.com/webapiv2/mix-search/v1/by-keyword'
data = {
'kw': f'{game_name}',
'X-UA' : x_ua
# 'X-UA': 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
}
r = requests.get(url=url, params=data)
pattern = re.compile('"type":"app","identification":"app:(.+?)"', re.S)
r1 = pattern.findall(r.text)
#從response中提取游戲id
return r1[0]
def download_screenshots(game_name):
url = f'https://www.taptap.com/webapiv2/app/v2/detail-by-id/{search(game_name)}'
r = requests.get(url=url, params={'X-UA': x_ua})
data = json.loads(r.text)
#轉(zhuǎn)換為字典格式
original_url = data.get('data').get('screenshots')
#提取出截圖url
try:
for i in original_url:
time.sleep(0.5)
game_original_url = i.get('original_url')
print(game_original_url, type(game_original_url))
respones = requests.get(game_original_url)
img = respones.content
file_name = game_original_url[-36: -4]
screenshots = os.path.join(os.path.dirname(__file__), f'screenshots/{game_name}')
if not os.path.exists(screenshots):
os.makedirs(screenshots)
file_path = os.path.join(screenshots, file_name)
with open(file_path + '.png', 'wb') as f:
f.write(img)
except:
print('下載失敗')
if __name__ == '__main__':
download_screenshots('lol')
以上就是使用python爬取taptap游戲截圖的步驟的詳細內(nèi)容,更多關(guān)于使用python爬取taptap游戲截圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作
這篇文章主要介紹了python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
分布式訓(xùn)練training-operator和pytorch-distributed?RANK變量不統(tǒng)一解決
這篇文章主要介紹了分布式訓(xùn)練training-operator和pytorch-distributed?RANK變量不統(tǒng)一問題的解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Opencv-Python圖像透視變換cv2.warpPerspective的示例
今天小編就為大家分享一篇關(guān)于Opencv-Python圖像透視變換cv2.warpPerspective的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04
Django用戶認證系統(tǒng) Web請求中的認證解析
這篇文章主要介紹了Django用戶認證系統(tǒng) Web請求中的認證解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
詳解分布式系統(tǒng)中如何用python實現(xiàn)Paxos
提到分布式算法,就不得不提 Paxos 算法,在過去幾十年里,它基本上是分布式共識的代 名詞,因為當前最常用的一批共識算法都是基于它改進的。比如,F(xiàn)ast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 協(xié)議等等。2021-05-05

