предисловие
Перед тем, как уйти с работы, я увидел, как кто-то в группе обсуждал использование некоторых скинов Wangzhe Pesticide в качестве обоев для компьютера, какое высокое разрешение, какой нижний пиксель, я проверил в Интернете, есть некоторые, но пиксели разные, поэтому я подумал Просто зайдите на официальный сайт и просканируйте его скин высокого разрешения напрямую, и тогда у вас будет тема статьи здесь.
Восхождение на идеи
Найдите список героев
Войдите на официальный сайт, затем введите введение героя, проверьте больше героев, вы можете увидеть всех героев, ссылка ниже
Список героев:PvP.QQ.com/Web201605/Также…
Детали героя
Нажмите на каждого героя, чтобы войти, вы можете увидеть подробную информацию, основное введение и отображение скина каждого героя, а скин, который нам нужно проползти, находится в правом нижнем углу, наведите на него мышь, вы можете отобразить скин один одним
Подробная информация о Сяо Лубань:PvP.QQ.com/Web201605/Также…
Анализ URL-адреса изображения скина
Из приведенного выше изображения Luban мы видим, что положение маленькой картинки скина расположено через F12.В элементе li есть элемент img, среди которых src и data-imgname img являются двумя атрибутами.Проверьте это , просто не сложно узнать, что значение атрибута src это маленькое изображение, а data-imgname это URL нужного нам большого изображения, но посмотрев исходный код, мы обнаружим, что такого атрибута в html нет, поэтому нам нужно проанализировать этот URL.Обыкновенным анализом найти картинки скинов других героев не сложно.112 это id героя, а 2 в bigskin-2 это первая картинка скина этого героя.
Начать писать скрипты для сканера
Шаг 1: Определите некоторые общие переменные
Шаг 2: Возьмите список всех героев
Шаг 3: петли через и проанализировать каждый узел кожи героя
Шаг 4: Загрузите изображение
Шаг 5: Конец сканера
Полный исходный код
Чувствую то, что я сказал выше, это действительно чернила, лучше ставить код сразу, ладно, ошибаюсь, исходник сдам сразу, прошу меня простить от всех героев и героинь, и при этом время, я тоже загружу код сайта знакомствGitHub.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
抓取王者荣耀皮肤
author: gxcuizy
date: 2018-11-06
"""
import requests
from bs4 import BeautifulSoup
from urllib import parse
import os
class Skin(object):
def __init__(self):
# 英雄的json数据
self.hero_url = 'https://pvp.qq.com/web201605/js/herolist.json'
# 英雄详细页的通用url前缀信息
self.base_url = 'https://pvp.qq.com/web201605/herodetail/'
# 英雄详细页url后缀信息
self.detail_url = ''
# 图片存储文件夹
self.img_folder = 'skin'
# 图片url的通用前缀
self.skin_url = 'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'
# 图片url的后缀信息
self.skin_detail_url = ''
def get_hero(self):
"""获取英雄的json数据"""
request = requests.get(self.hero_url)
hero_list = request.json()
return hero_list
def get_hero_skin(self, hero_name, hero_no):
"""获取详细页英雄皮肤展示的信息,并爬图"""
url = parse.urljoin(self.base_url, self.detail_url)
request = requests.get(url)
request.encoding = 'gbk'
html = request.text
# 获取皮肤信息的节点
soup = BeautifulSoup(html, 'lxml')
skip_list = soup.select('.pic-pf-list3')
for skin_info in skip_list:
# 获取皮肤名称
img_names = skin_info.attrs['data-imgname']
name_list = img_names.split('|')
skin_no = 1
# 循环下载皮肤图片
for skin_name in name_list:
self.skin_detail_url = '%s/%s-bigskin-%s.jpg' % (hero_no, hero_no, skin_no)
skin_no += 1
img_name = hero_name + '-' + skin_name + '.jpg'
self.download_skin(img_name)
def download_skin(self, img_name):
"""下载皮肤图片"""
img_url = parse.urljoin(self.skin_url, self.skin_detail_url)
request = requests.get(img_url)
if request.status_code == 200:
print('download-%s' % img_name)
img_path = os.path.join(self.img_folder, img_name)
with open(img_path, 'wb') as img:
img.write(request.content)
else:
print('img error!')
def make_folder(self):
"""创建图片存储文件夹"""
if not os.path.exists(self.img_folder):
os.mkdir(self.img_folder)
def run(self):
"""脚本执行入口"""
self.make_folder()
hero_list = self.get_hero()
for hero in hero_list:
hero_no = str(hero['ename'])
self.detail_url = hero_no + '.shtml'
hero_name = hero['cname']
self.get_hero_skin(hero_name, hero_no)
# 程序执行入口
if __name__ == '__main__':
skin = Skin()
skin.run()
Наконец
На самом деле, идея заключается в том, что просто. Конечно, если у вас есть другие идеи и идеи, пожалуйста, оставьте сообщение для обмена. Эх, я почти забыл. Если вы заинтересованы, вы можете попробовать ползти всех изображений высокой четкости скинов героев в Лиге легендов. Если у вас есть какие-либо другие вопросы, пожалуйста, оставьте сообщение и обмен.