Python采集王者最低戰(zhàn)力信息實戰(zhàn)示例
??數(shù)據(jù)采集
??確定網(wǎng)址
王者新賽季馬上就要開始了,大家都開始沖榜了,準備拿一個小省標,那么,本文,就來練習獲取各地最低戰(zhàn)力的爬蟲采集實戰(zhàn)。
確定好我們的目標網(wǎng)址之后,我們要找到我們需要的數(shù)據(jù)源,通過開發(fā)者工具分析,我們不難發(fā)現(xiàn)其數(shù)據(jù)地址。
請求URL:
https://www.sapi.run/hero/select.php
請求方式:
- GET
參數(shù):
| 參數(shù)名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| hero | 是 | string | 英雄名 |
| type | 是 | string | 選aqq、awx、iqq、iwx |
請求示例
https://www.sapi.run/hero/select.php?hero=孫悟空&type=aqq
返回示例
{
"code": 200,
"data": {
"uid": "167",
"name": "孫悟空",
"alias": "齊天大圣-孫悟空",
"platform": "安卓-扣扣區(qū)",
"photo": "https://game.gtimg.cn/images/yxzj/img201606/heroimg/167/167.jpg",
"area": "武強縣",
"areaPower": "3693",
"city": "潮州市",
"cityPower": "5501",
"province": "天津市",
"provincePower": "7274",
"guobiao": "11404",
"stamp": "1654640093",
"updatetime": "2022/06/08 06:14:53",
"clientIP": "119.0.0.126"
},
"msg": " "
}
下面,我們開始寫代碼。
??獲取數(shù)據(jù)
第一步,發(fā)送請求,獲得數(shù)據(jù)。
import requests
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
hero_url = 'https://pvp.qq.com/web201605/herolist.shtml'
response = requests.get(url=hero_url, headers=headers)
這段代碼中,我們使用 Python 的 requests 模塊發(fā)送了一個 GET 請求,請求的 URL 為 https://pvp.qq.com/web201605/herolist.shtml,并且使用了 headers 參數(shù)來設(shè)置請求頭信息。請求頭信息包括了 user-agent 字段,用于指定瀏覽器的 User-Agent 信息。
請求返回的結(jié)果是一個 Response 對象,我們可以使用 response.text 屬性來獲取請求的響應內(nèi)容。在這個例子中,我們使用了 response.json() 方法來將響應內(nèi)容轉(zhuǎn)換為 JSON 格式,并將其存儲在 response.text 屬性中。
response.encoding='gbk'
heros = re.findall('alt=".*?">(.*?)</a>',response.text)[0:93]
這段代碼中,我們使用 Python 的 re 模塊中的 findall() 函數(shù)來查找 JSONP 回調(diào)函數(shù)的參數(shù)。findall() 函數(shù)可以返回一個列表,其中包含了所有匹配的子字符串。
在這個例子中,我們使用 findall() 函數(shù)來查找 JSONP 回調(diào)函數(shù)的參數(shù),并將其存儲在 response.text 變量中。然后,我們使用 [0:93] 來獲取第一個匹配的子字符串,并將其存儲在 heros 變量中。
需要注意的是,findall() 函數(shù)返回的子字符串列表中可能包含多個匹配的子字符串,因此我們需要使用 [0:93] 來獲取第一個匹配的子字符串。

??解析數(shù)據(jù)
我們發(fā)現(xiàn),我們得到了這樣英雄名字的數(shù)據(jù),下面,我們就可以構(gòu)建url,獲取戰(zhàn)力信息。
for hero in heros:
print(hero)
url = f'https://www.sapi.run/hero/select.php?hero={hero}&type=qq'
res = requests.get(url)
data = res.json()['data']
name = data['name']
area = data['area']
areaPower= data['areaPower']
city = data['city']
cityPower = data['cityPower']
province= data['province']
provincePower = data['provincePower']
platform= data['platform']
updatetime = data['updatetime']
這段代碼中,我們使用 Python 的 requests 模塊發(fā)送了一個 GET 請求,請求的 URL 為 https://www.sapi.run/hero/select.php?hero={hero}&type=qq,并且使用了 json() 方法將響應內(nèi)容轉(zhuǎn)換為 JSON 格式,并將其存儲在 res.json() 變量中。
請求返回的結(jié)果是一個 Response 對象,我們可以使用 response.json() 方法將響應內(nèi)容轉(zhuǎn)換為 JSON 格式,并將其存儲在 res.json() 變量中。
在這個例子中,我們使用了 res.json() 變量來獲取響應內(nèi)容,并將其存儲在 data 變量中。然后,我們使用 name 變量獲取了英雄名稱,使用 area 變量獲取了區(qū)域名字,使用 areaPower 變量獲取了區(qū)域戰(zhàn)力,使用 city 變量獲取了市,使用 cityPower 變量獲取了市戰(zhàn)力,使用 province 變量獲取了省份,使用 provincePower 變量獲取了省份戰(zhàn)力,使用 platform 變量獲取了平臺,使用 updatetime 變量獲取了更新時間。
保存數(shù)據(jù)
dit = {
'英雄名稱':name,
'服務區(qū)':platform,
'更新時間': updatetime,
'銅牌區(qū)域':area,
'銅牌分數(shù)': areaPower,
'銀牌區(qū)域':city,
'銀牌分數(shù)': cityPower,
'金牌區(qū)域':province,
'金牌分數(shù)':provincePower ,
}
這段代碼是一個 Python 代碼片段,它定義了一個字典,其中包含了一些英雄的信息,包括英雄名稱、服務區(qū)、更新時間、銅牌區(qū)域、銅牌分數(shù)、銀牌區(qū)域、銀牌分數(shù)、金牌區(qū)域、金牌分數(shù)等。
下面就是數(shù)據(jù)的寫入了。其實,把字典數(shù)值寫入到csv文件里面,特別簡單,只需呀四行代碼就可以實現(xiàn)。
f = open('最低戰(zhàn)力.csv', mode='a', encoding='utf-8_sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['英雄名稱', '服務區(qū)', '更新時間', '銅牌區(qū)域', '銅牌分數(shù)',
'銀牌區(qū)域', '銀牌分數(shù)', '金牌區(qū)域','金牌分數(shù)'])
csv_writer.writeheader()
這段代碼打開了一個名為 '最低戰(zhàn)力.csv' 的文件,并將其以追加模式打開。它還指定了文件的編碼為 UTF-8 和行結(jié)束符為空字符串(newline='')。
然后,代碼創(chuàng)建了一個 csv.DictWriter 對象,并將其與文件對象關(guān)聯(lián)起來。fieldnames 參數(shù)指定了字典中的鍵和值的名稱。
接下來,代碼調(diào)用 writeheader() 方法來寫入表頭。這個方法將字典中的鍵值對寫入文件中,并將其作為表頭。
寫入字典數(shù)值。
csv_writer.writerow(dit)
這時候,我們就會在文件夾里面找到最低戰(zhàn)力的csv文件,我們打開看看效果。

以上就是Python采集王者最低戰(zhàn)力信息實戰(zhàn)示例的詳細內(nèi)容,更多關(guān)于Python采集王者戰(zhàn)力信息的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python對Excel不同的行分別復制不同的次數(shù)
這篇文章主要介紹了如何利用Python實現(xiàn)讀取Excel表格文件數(shù)據(jù),并將其中符合我們特定要求的那一行加以復制指定的次數(shù),感興趣的小伙伴可以學習一下2023-07-07
Python中Playwright?與?pyunit?結(jié)合使用詳解
這篇文章主要介紹了Python中Playwright?與?pyunit?結(jié)合使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
使用python調(diào)用zxing庫生成二維碼圖片詳解
本篇文章主要介紹了使用python調(diào)用zxing庫生成二維碼圖片,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01

