Índice
1. Guie o pacote e implante o ambiente
2. Disfarçar cabeçalhos de solicitação
3. Visite a lista de heróis e obtenha o ID do herói
4. Visite a página inicial de cada herói para ver os detalhes da imagem.
5. Escreva em uma pasta local (a pasta é nomeada automaticamente)
Prefácio
Já faz muito tempo, fãs e amigos.
A UP estava ocupada com as finais e viajando para o exterior há algum tempo, então não atualizamos nossa coluna do rastreador há muito tempo. A partir de hoje, continuaremos atualizando alguns pequenos casos interessantes de vez em quando. Claro, eles não irão muito longe. É suficiente para a UP usar um rastreador ~ Embora o rastreador seja bom, se você for longe demais, você gostaria de comprar uma pulseira de prata!
Ok, sem mais delongas, o que trazemos hoje é baixar as imagens de skins de todos os heróis em lotes do site oficial de Honor of Kings, e colocá-las na mesma pasta de acordo com o nome do herói. O efeito é o seguinte:
Que tal? É muito organizado e a qualidade da imagem é muito alta. Vamos começar o tutorial de hoje ~
Propósito
Rastreie os pôsteres de skins em alta definição de todos os heróis no site oficial de Honor of Kings
linha de raciocínio
1. Guie o pacote e implante o ambiente
2. Disfarçar cabeçalhos de solicitação
3. Visite a lista de heróis e obtenha o ID do herói
4. Visite a página inicial de cada herói para ver os detalhes da imagem.
5. Escreva em uma pasta local (a pasta é nomeada automaticamente)
Código
1. Guie o pacote e implante o ambiente
# 发送请求的模块 pip install requests
import requests
# 解析html代码的工具 lxml pip install lxml
from lxml import etree
import os
from time import sleep
2. Disfarçar cabeçalhos de solicitação
# 伪装自己
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
# 'referer': 'https://pvp.qq.com/web201605/herolist.shtml'
}
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_resp = requests.get(hero_list_url, headers=headers, verify=False)
3. Visite a lista de heróis e obtenha o ID do herói
for h in hero_list_resp.json():
ename = h.get('ename')
cname = h.get('cname')
# 访问英雄主页
hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
hero_info_resp = requests.get(hero_info_url, headers=headers)
hero_info_resp.encoding = 'gbk'
e = etree.HTML(hero_info_resp.text)
4. Visite a página inicial de cada herói para ver os detalhes da imagem.
names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]
names = [name[0:name.index('&')] for name in names.split('|')]
# 发送请求
for i, n in enumerate(names):
resp = requests.get(
f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i + 1}.jpg',
headers=headers)
# 接收服务器响应的图片(皮肤)
5. Escreva em uma pasta local (a pasta é nomeada automaticamente)
# 保存图片(皮肤)
if not os.path.exists(f'./13_skins/{cname}'):
os.makedirs(f'./13_skins/{cname}')
with open(f'./13_skins/{cname}/{n}.jpg', 'wb') as f:
f.write(resp.content)
print(f'已下载皮肤: {n}')
sleep(1)
Código fonte completo
# 发送请求的模块 pip install requests
import requests
# 解析html代码的工具 lxml pip install lxml
from lxml import etree
import os
from time import sleep
# 伪装自己
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',
# 'referer': 'https://pvp.qq.com/web201605/herolist.shtml'
}
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_resp = requests.get(hero_list_url, headers=headers, verify=False)
# print(hero_list_resp.json())
for h in hero_list_resp.json():
ename = h.get('ename')
cname = h.get('cname')
# 访问英雄主页
hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
hero_info_resp = requests.get(hero_info_url, headers=headers)
hero_info_resp.encoding = 'gbk'
e = etree.HTML(hero_info_resp.text)
names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]
names = [name[0:name.index('&')] for name in names.split('|')]
# 发送请求
for i, n in enumerate(names):
resp = requests.get(
f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i + 1}.jpg',
headers=headers)
# 接收服务器响应的图片(皮肤)
# 保存图片(皮肤)
if not os.path.exists(f'./13_skins/{cname}'):
os.makedirs(f'./13_skins/{cname}')
with open(f'./13_skins/{cname}/{n}.jpg', 'wb') as f:
f.write(resp.content)
print(f'已下载皮肤: {n}')
sleep(1)
resultado em execução
Resumir
Hoje aprendemos como rastrear os pôsteres de skins em alta definição do site oficial de Honor of Kings. Qual conteúdo você deseja ver na próxima edição? Por favor, deixe uma mensagem na área de comentários ou envie uma mensagem privada UP~