42. Rastreamento louco de todos os pôsteres de alta definição de Honor of Kings (código-fonte no final do artigo)

Índice

Prefácio

Propósito

linha de raciocínio

Código

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 fonte completo

resultado em execução

Resumir


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~

Acho que você gosta

Origin blog.csdn.net/m0_59180666/article/details/132195883
Recomendado
Clasificación