教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)

代码展示:

保存在各自的文件夹中

美么?


让我们开始爬虫之路

开发环境

windows 10
python3.6

开发工具

pycharm
webdriver

os,re,lxml,jsonpath

打开王者荣耀官网点击游戏资料

判断是同步加载还是异步加载, 可以确定为异步加载

点击XHR继续抓包,ename为英雄的ID,cname为英雄的名字

jsonpath获取

# 第一次请求,获取hero_id hero_name response = requests.get(start_url, headers=headers).json()# pprint(response)hero_ids = jsonpath.jsonpath(response, '$..ename')# pprint(hero_ids)hero_names = jsonpath.jsonpath(response, '$..cname')# pprint(hero_names)

构造英雄地址

hero_info_url = r’https://pvp.qq.com/web201605/herodetail/{}.shtml’.format(hero_id)

driver访问每一个英雄地址,获取源码,etree解析,xpath提取hero_skin_names,hero_skin_urls

    for hero_name, hero_id in zip(hero_names, hero_ids):hero_info_url = r'https://pvp.qq.com/web201605/herodetail/{}.shtml'.format(hero_id)# 发送英雄详情页请求得到 hero_info_contentdriver.get(hero_info_url)# 获取页面源码hero_info_content = driver.page_source# 解析网页hero_info_content_str = etree.HTML(hero_info_content)# 提取 hero_skin_names hero_skin_urlshero_skin_names = hero_info_content_str.xpath(r'//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0].split('|')hero_skin_urls = hero_info_content_str.xpath(r'//ul[@class="pic-pf-list pic-pf-list3"]//img/@data-imgname')

遍历hero_skin_urls地址,获取图片的二进制数据,最后进行保存,创建英雄的文件夹,将皮肤图片保存在各自的文件夹中

# 补全hero_skin_url地址hero_skin_url = r'https:'+hero_skin_url# 获取图片的二进制信息img_content = requests.get(hero_skin_url, headers=headers).contenttry:# 创建文件夹if not os.path.exists('./{}'.format(hero_name)):os.mkdir(r'./{}'.format(hero_name))with open(r'./{}/{}.jpg'.format(hero_name, hero_skin_name), 'wb')as f:f.write(img_content)print('图片正在下载:{}/{}.jpg'.format(hero_name, hero_skin_name))except Exception as e:continue

在执行时本来是以requests库进行获取英雄页面的源码,但是发生报错,报错原因是因为编码问题,所以采用webdriver访问每个英雄页面,driver.page_source获取源码,然后进行数据提取。

源码展示

# !/usr/bin/nev python
# -*-coding:utf8-*-import requests, os, jsonpath, re
from selenium import webdriver
from pprint import pprint
from lxml import etreedef main():start_url = r'https://pvp.qq.com/web201605/js/herolist.json'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/87.0.4280.88 Safari/537.36','Referer': 'https://pvp.qq.com/web201605/herolist.shtml'}driver = webdriver.Chrome(executable_path=r'D:pythonchromedriver.exe')# 第一次请求,获取hero_id hero_name hero_skin_namesresponse = requests.get(start_url, headers=headers).json()# pprint(response)hero_ids = jsonpath.jsonpath(response, '$..ename')# pprint(hero_ids)hero_names = jsonpath.jsonpath(response, '$..cname')# pprint(hero_names)for hero_name, hero_id in zip(hero_names, hero_ids):hero_info_url = r'https://pvp.qq.com/web201605/herodetail/{}.shtml'.format(hero_id)# 发送英雄详情页请求得到 hero_info_contentdriver.get(hero_info_url)# 获取页面源码hero_info_content = driver.page_source# lxml解析hero_info_content_str = etree.HTML(hero_info_content)# 提取 hero_skin_names hero_skin_urlshero_skin_names = hero_info_content_str.xpath(r'//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0].split('|')hero_skin_urls = hero_info_content_str.xpath(r'//ul[@class="pic-pf-list pic-pf-list3"]//img/@data-imgname')# hero_skin_name进行替换不必要的信息for hero_skin_name, hero_skin_url in zip(hero_skin_names, hero_skin_urls):suffix_notation = re.findall(r'&d.?', hero_skin_name)[0]hero_skin_name = hero_skin_name.replace(suffix_notation, '')# 补全hero_skin_url地址hero_skin_url = r'https:'+hero_skin_url# 获取图片的二进制信息img_content = requests.get(hero_skin_url, headers=headers).contenttry:# 创建文件夹if not os.path.exists('./{}'.format(hero_name)):os.mkdir(r'./{}'.format(hero_name))with open(r'./{}/{}.jpg'.format(hero_name, hero_skin_name), 'wb')as f:f.write(img_content)print('图片正在下载:{}/{}.jpg'.format(hero_name, hero_skin_name))except Exception as e:continueif __name__ == '__main__':main()

代码仅供学习,欢迎一键三连,感谢各位的支持!

祝大家学习python顺利!

教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)相关推荐

  1. python爬取王者荣耀全皮肤,漫客的福利!

    先明确思路: 寻找皮肤图片地址 1 找到英雄列表 2 找到英雄皮肤地址 下载图片 1 英雄有几个皮肤 2 下载文件 进入正题:如何爬取王者荣耀的英雄皮肤照片? 分为两步: 找到皮肤图片的地址 下载图片 ...

  2. python玩王者荣耀皮肤碎片怎么获得_大神教你用Python爬取王者荣耀英雄皮肤,不充钱也能入手!...

    前言 临下班前,看到群里有人在讨论用王者农药的一些皮肤作为电脑的壁纸,什么高清的,什么像素稍低的,网上查了一手,也有,但像素都不一样,所以,我就想着,自己去官网直接爬他的高清皮肤就好了,然后就有了这边 ...

  3. Python爬取王者荣耀全英雄皮肤(仅仅只是为了看皮肤)

    这两天才开始学习Python基础,听别人说可以利用Pythong爬取王者皮肤,出于好奇,在csdn搜索了一番,发现很多详细介绍,注释的非常清楚,简单易懂易操作,非常适合用来学习,这里转载一份亲测有用的 ...

  4. python爬取王者荣耀全皮肤高清无水印图片

    前期准备:安装requests库,我猜你可能需要: Python网络爬虫与信息提取笔记01-Requests库入门 Windows下安装pip和换源 import os import requests ...

  5. Python爬取王者荣耀全套皮肤

    一.分析需要爬取的网站 ①.打开官方王者荣耀壁纸网站 网站地址:https://pvp.qq.com/web201605/wallpaper.shtml ②.快捷键F12,调出控制台进行抓包 ③.找到 ...

  6. python爬取大众点评网商家信息以及评价,并将数据存储到excel表中(源码及注释)

    import requests from bs4 import BeautifulSoup import traceback # 异常处理 import xlwt # 写入xls表 # Cookie记 ...

  7. python爬取王者_python爬取王者荣耀全皮肤的简单实现代码

    相信现在很多人都喜欢玩王者荣耀这款手游,里面好看的皮肤令人爱不释手.那么你有没有想过把王者荣耀高清皮肤设置为壁纸,像下面这样 今天就来教大家如何利用python16行代码,实现王者荣耀全部高清皮肤的下 ...

  8. python爬取王者荣耀皮肤高清图

    python爬取王者荣耀皮肤高清图 前期准备,导入模块 requests json os 进入王者荣耀官网,进入游戏壁纸页面,f12进入开发者模式,按照下图找到这个json文件,用于对图片的数据请求. ...

  9. 教你用PHP爬取王者荣耀英雄皮肤高清壁纸(附源码)

    午饭后看到一篇文章关于"用Python爬取王者荣耀官网的英雄皮肤图片",于是顺手用PHP也写了一个,在这里给大家分享一下,贴出源码: //下载王者荣耀皮肤图片 public fun ...

最新文章

  1. ICML2020 | 基于贝叶斯元学习在关系图上进行小样本关系抽取
  2. iOS开发-策略模式
  3. Quorum-based voting
  4. metasploit快速入门(二)收集信息
  5. Cors 跨域Access-Control-Allow-Origin
  6. 【ABAP】通过SE30来测试程序的执行效率
  7. vue给组件传递不同的值
  8. oracle 统计分析 dic,数据库优化之统计分析实战篇
  9. css扩展语言_如何决定是否应该链接或扩展CSS类
  10. android标题栏的属性,android – 属性“titleTextStyle”已经定义?
  11. stm32f103r8t6的晶振频率_STM32F103R8T6[1]
  12. github emoji 表情列表 1
  13. ssm线上文具销售系统答辩PPT模板
  14. 软件持续集成(CI)、持续交付(CD)和持续部署(CD)
  15. 我的代码被CTO说:写的代码像坨...
  16. html语言怎么那么难用,js为什么那么难
  17. Debian 10截图小工具 flameshot
  18. 伦敦金行情走势k线图
  19. 小布什逗留香港6小时 赴知名裁缝店做18套西装——中新网
  20. 安卓获取及监听手机网络状态

热门文章

  1. 关于SQL SERVER注释快捷键
  2. UOS V20 SP1 升级到Update1 后WPS无法打开
  3. 我爬了链家青岛市北3000套二手房得出一个结论
  4. omnet++,veins,plexe模块介绍与实现
  5. adb 连接手机 cannot connect to 192.168.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
  6. matlab空间曲面拟合,【Matlab】离散点拟合曲面
  7. Vue如何循环渲染图片
  8. 无线wifi打印机服务器原理,一般无线打印机的连接方法及遇到常见故障解决办法...
  9. 现实环境中,关于Teb Local Planner 参数调试总结
  10. 程序员职场务必了解的薪资待遇