日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片

發(fā)布時(shí)間:2024/9/30 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

臨下班前,看到群里有人在討論用王者農(nóng)藥的一些皮膚作為電腦的壁紙,什么高清的,什么像素稍低的,網(wǎng)上查了一手,也有,但像素都不一樣,所以,我就想著,自己去官網(wǎng)直接爬他的高清皮膚就好了,然后就有了這邊文章說的主題了。

爬圖思路

找到英雄列表

進(jìn)入官網(wǎng),然后進(jìn)入英雄介紹,查看更多英雄,就能看到全部的英雄了,也就是下面的這個(gè)鏈接

英雄詳情

點(diǎn)擊每個(gè)英雄進(jìn)來,就可以看到每個(gè)英雄的詳細(xì)信息,基本介紹以及皮膚展示,而我們需要爬取的皮膚,就在右下角那里,鼠標(biāo)放上去,就可以逐個(gè)展示該皮膚了

分析皮膚圖片URL

從上面的這張魯班的圖片中我們可以看到,通過F12定位到皮膚的小圖片位置,li元素里有一個(gè)img的元素,其中img的src和data-imgname這兩個(gè)屬性,查看一下,就不難知道,src的屬性值是小圖,而data-imgname則是我們需要的大圖URL,但是查看源碼,就會(huì)發(fā)現(xiàn),在html中,并沒有這個(gè)屬性,所以,需要我們分析這個(gè)URL的規(guī)律來得到其他英雄的皮膚圖片,分析也不難發(fā)現(xiàn),112就是英雄的id,而bigskin-2里面的2即表示這個(gè)英雄的第幾張皮膚圖片

開始編寫爬蟲腳本

第一步:定義一些常用變量

第二步:抓取所有英雄列表

第三步:循環(huán)遍歷,分析每個(gè)英雄皮膚節(jié)點(diǎn)

第四步:下載圖片

第五步:爬蟲結(jié)束

完整源碼

感覺上面七七八八的,說了些啥呀,真是墨跡,還不如直接上代碼實(shí)在,好吧,我錯(cuò)了,馬上交出源碼,請各路豪杰女俠饒恕,同時(shí),代碼我也上傳了交友網(wǎng)站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數(shù)據(jù)

self.hero_url = 'https://pvp.qq.com/web201605/js/herolist.json'

# 英雄詳細(xì)頁的通用url前綴信息

self.base_url = 'https://pvp.qq.com/web201605/herodetail/'

# 英雄詳細(xì)頁url后綴信息

self.detail_url = ''

# 圖片存儲(chǔ)文件夾

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數(shù)據(jù)"""

request = requests.get(self.hero_url)

hero_list = request.json()

return hero_list

def get_hero_skin(self, hero_name, hero_no):

"""獲取詳細(xì)頁英雄皮膚展示的信息,并爬圖"""

url = parse.urljoin(self.base_url, self.detail_url)

request = requests.get(url)

request.encoding = 'gbk'

html = request.text

# 獲取皮膚信息的節(jié)點(diǎn)

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

# 循環(huán)下載皮膚圖片

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):

"""創(chuàng)建圖片存儲(chǔ)文件夾"""

if not os.path.exists(self.img_folder):

os.mkdir(self.img_folder)

def run(self):

"""腳本執(zhí)行入口"""

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)

# 程序執(zhí)行入口

if __name__ == '__main__':

skin = Skin()

skin.run()

復(fù)制代碼

最后

其實(shí)思路就是這么簡單,當(dāng)然了,如果有其他思路以及想法的,歡迎留言交流。額,差點(diǎn)忘了,大家有興趣的,可以嘗試一下爬取英雄聯(lián)盟的所有英雄皮膚高清圖片,有其他任何問題,也歡迎留言和交流。

總結(jié)

以上是生活随笔為你收集整理的python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。