python 爬取王者荣耀高清壁纸

代码地址如下:
http://www.demodashi.com/demo/13104.html

一、前言

打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面

预览一下桌面吧:

OVLlttekPNMS4Yove0r.jpg

是不是看着这样的桌面也很带感,^^ (学会这个技术,你可以爬取其他网站的类似图片,哄妹子专用,O(∩∩)O哈哈~)

二、程序实现

  • 我们先去找一个靠谱的网站吧,自然而然的网站地址锁定在王者荣耀官网上,正好他给我们提供了壁纸页面 http://pvp.qq.com/web201605/wallpaper.shtml
    ms1ydHIkpwceQ2gANIn.png
    一共14页

  • 构建我们的目标数据URL
    随便多翻几页,用firebug 等调试工具,观察一下我们的请求列表,找到其中特别明显的图片list api

plKAZOrfebwpjqSduLf.png

展开以后,特别详细的URL
http://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page=10&iOrder=0&iSortNumClose=1&jsoncallback=jQuery17106927574791770883_1525742053044&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1525742856493

问题简单了就:

 urls = [ "http://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&page=%d&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&iOrder=0&iSortNumClose=1&jsoncallback=jQuery1710881537174597735    6_1486710433816&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1486710458098" % (p) for p in range(0,14) ]
  • 获取文档的内容:
    这一步就比较简单了,requests 堪称写给人类的http 请求库,可以自己参看他的api 很强大,可以完成,任何手工在浏览器上的任何行为,用得好,你可以省掉很多的事儿,顺路贴一个api 链接吧 (http://www.python-requests.org/en/master/)[http://www.python-requests.org/en/master/]

    def loadUrlContent(url):
    return requests.get(u).text

  • 解析文档内容 :

api 返回情况,大致如下: 是一个jsonp callback的返回
x8BFWhSfmosSVbNRp9w.png

这种情况一般是callback后边对应了一个json对象,我们可以用python的 json 类库来解析:

解析数据千差万别,本文的数据相对简单,所以用了相对简单的处理方式:

## 这种解析数据的代码并不适用于所有的页面
def jsonContent(pageContent):
    json_content = pageContent.split("(")[1].split(")")[0]
    return json.loads(json_content)

解析完成以后的一个json对象属性如下:

VTKv8n1ieEdAr0zSXbt.png

查看json 对象内容必备: https://www.json.cn/ 可以看到清晰的对象属性

很明显的,List 属性就是我们想要获取的壁纸对象了,然后,其中 sProdImgNo_1,2,3,4,5,6,7,8 中保存了,url 编码的图片url地址。
本实例为了演示我们只获取其中的 sProdImgNo_5 来做下载,大家可以根据需求做不同的遍历.
写一个简单的对象循环完成我们的子任务吧:

for item in pageJson['List']:
    dealWithItem(item)
  • 处理元素函数 , 下载文件图片:
    观察发现图片url 是url编码好的地址: 我们可以用 urllib 的 unquote 方法转成原文:
    获取的一个图片URL原文是这样的:
    F8JsfVCkOl9usRCIFe5.png
    自行对比下,观测到的图片的真实地址如下:
    HlQ2eDP5yRQsWwfSdxl.png
    然后,我们只需要简单的把 200 replace 成0 就ok 了。
    下载文件,直接通过requests get url 保存成文件就ok啦。

三、运行效果

  • 最终展示下我们的成果吧:

ogYyZNagXoKunyJ3YSK.jpg

四、项目文件结构

nk7uz34z1rlJ6r1psHx.png

python 爬取王者荣耀高清壁纸

代码地址如下:
http://www.demodashi.com/demo/13104.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,你可以使用虫技术来王者荣耀英雄图片。以下是一个简单的示例代码来演示如何使用Python王者荣耀英雄图片: ```python import requests import os def download_image(url, save_path): response = requests.get(url) with open(save_path, 'wb') as f: f.write(response.content) def crawl_hero_images(): # 创建保存图片的文件夹 if not os.path.exists('hero_images'): os.makedirs('hero_images') # 发送请求获英雄列表 hero_list_url = 'https://api.example.com/heroes' response = requests.get(hero_list_url) hero_list = response.json() # 遍历英雄列表,每个英雄的皮肤图片 for hero in hero_list: hero_name = hero['name'] skin_list = hero['skins'] for skin in skin_list: skin_name = skin['name'] image_url = skin['image_url'] save_path = f'hero_images/{hero_name}_{skin_name}.jpg' download_image(image_url, save_path) print(f'Successfully downloaded {hero_name} - {skin_name} image.') crawl_hero_images() ``` 上述代码中,我们首先创建了一个`download_image`函数,用于下载图片。然后,我们定义了一个`crawl_hero_images`函数,用于英雄皮肤图片。在该函数中,我们首先发送请求获英雄列表,然后遍历英雄列表,对于每个英雄,再遍历其皮肤列表,获皮肤图片的URL,并使用`download_image`函数下载图片到本地。 请注意,上述代码中的URL和文件路径仅作为示例,请根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值