获取《王者荣耀》全英雄高清无码图

news/2024/11/23 0:14:08/

前言

最近看到有网友爬《王者荣耀》全英雄皮肤图,觉得挺有意思的;也顺便记录下自己在分析爬虫的过程。

正文

0x01分析

首先打开http://pvp.qq.com/web201605/herolist.shtml可以看到全英雄列表,F12进入调试模式。找到英雄对应的链接地址。
这里写图片描述

然后点进英雄后F12,选择对应的皮肤查询图片链接地址。这里取图片链接有有问题,后面代码实现详细说。
这里写图片描述

最后就是搜集链接地址,下载图片保存。

0x02代码实现

使用requests库抓取页面,使用BeautifulSoup分析返回的html。获取所有英雄的详细链接、名称和编号

import os
import re
import requests
from bs4 import BeautifulSoupbaseurl = 'http://pvp.qq.com/web201605'
mainurl = 'http://pvp.qq.com/web201605/herolist.shtml'
herolist = []def getHeroList():'''取所以英雄存入list中'''hero = {}res = requests.get(mainurl)sp = BeautifulSoup(res.content, "html.parser")lists = sp.select('body > div.wrapper > div > div > div.herolist-box > div.herolist-content > ul > li')for li in lists:oj = li.select('a')[0];hero['url'] = oj['href']hero['name'] = oj.text# 正则表达式取ename编号ename = re.findall('herodetail/(\d+)\.shtml', oj['href'])[0]hero['ename'] = enameherolist.append(hero)hero = {}return herolist

获取英雄皮肤图片链接,本以为会像“获取英雄链接”一样简单的,但我错了。通过代码获取的"英雄详细页“数据 和 浏览器F12看到的不一样。
代码获取的内容
这里写图片描述
浏览器F12下的内容
这里写图片描述

0x03问题分析与处理

猜想一

我首先想到的是cookies 和 headers 参数。但后面详细分析请求和几次尝试后问题还是没能解决。

猜想二

怀疑是页面ajax异步请求获取的地址。但分析后并未找至ajax请求数据。

问题确定

后来详细看了几个 js文件才找至答案。图片链接是js中生成。
这里写图片描述

0x04爬虫的实现

    for hero in herolist:herodir = os.path.join(os.getcwd(), hero['name'])heropage = baseurl + '/' + hero['url']print('------------%s---%s-----------' % (herodir, heropage))res = requests.get(heropage)sop = BeautifulSoup(res.content, "html.parser")li = sop.select('body > div.wrapper > div.zk-con1.zk-con > div > div > div.pic-pf > ul ')[0]['data-imgname']print(li)li = str(li).split('|')print(li)# 遍历所有皮肤for i in range(len(li)):# 生成图片链接imgurl = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' \+ hero['ename'] + '/' + hero['ename'] + '-bigskin-' + str(i + 1) + '.jpg'imgname = os.path.join(herodir, li[i]+".jpg")print('----[%s]--[%s]---' % (imgname, imgurl))# 创建英雄目录if os.path.exists(herodir) == False:os.mkdir(herodir)saveImg(imgname, imgurl)

这里写图片描述

====== 20181024更新 =====

有朋友反应已经不能正常爬取图片,今天维护下。发现页面中的herolist已经改成ajax异步获取。同步下代码给有需要的朋友
两图说明下ajax的过程
在这里插入图片描述
在这里插入图片描述

环境说明

python3.6
requests
bs4
json

最新代码

链接: https://pan.baidu.com/s/17FP1jom16VvXHc0AJkkIGA
密码: 5i5u


http://www.ppmy.cn/news/439319.html

相关文章

第七章 原理篇:HOG特征提取

之前面试被问到了然后没有讲出来,所以今天复习一下! 气死我了! 参考教程: What Is a Feature Descriptor in Image Processing? https://medium.com/analytics-vidhya/a-gentle-introduction-into-the-histogram-of-oriented-…

IDEA 设置 背景 图片 详细步骤(结尾附高清背景图片)

先上效果图,原图在结尾 第一步,找到搜索界面,在搜索界面搜索 Set Background Image 之后,找到想设置的图片的存储路径 接下来设置不透明度Opacity,越向右,图片的不透明度越高,图片看起来越明显 …

关于背景图

今天学习了关于背景图的知识 1.背景1 <style type"text/css"> .box1 { width: 500px; height: 500px; margin: 0 auto; /* 需求1:添加背景色 */ /* 1、 background-color: ; 添加背景色 */ background-color: red; /* 需求2:添加背景图片 */ background-imag…

html-背景图

1: background-color 设置背景颜色 2:background-image来设置背景图片 - 语法&#xff1a;background-image:url(相对路径); -可以同时为一个元素指定背景颜色和背景图片&#xff0c; 这样背景颜色将会作为背景图片的底色 -图片在元素中的位置 如果背景图片大于元素&#xff…

html 网页整体的背景色,HTML 背景

HTML 背景 好的背景使站点看上去特别棒。 背景(Backgrounds) 背景颜色(Bgcolor) 背景颜色属性将背景设置为某种颜色。属性值可以是十六进制数、RGB 值或颜色名。 以上的代码均将背景颜色设置为黑色。 背景(Background) 背景属性将背景设置为图像。属性值为图像的URL。如果图像尺…

高清背景移除算法

环境 ubuntu 18.04 64bitpytorch 1.7.1 cu101 简介 BackgroundMattingV2 是一个实时的、可应用于高分辨率的背景移除器。论文地址&#xff1a;https://arxiv.org/abs/2012.07810 BackgroundMattingV2 算法体验 # 下载源码 git clone https://github.com/PeterL1n/BackgroundMa…

HTML背景

1: background-color设置背景色 2、 设置背景图片 语法&#xff1a;background-image:url(./img) ; _可以同时设置背景色&#xff0c;火绒背景图片&#xff0c;如果同时设置&#xff0c;背景色是在背景图下面 --图片在元素中的位置 如果背景图片大于元素&#xff0c;默认是…