吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7682|回复: 36
收起左侧

[Python 转载] 王者荣耀皮肤图片爬虫

[复制链接]
天空宫阙 发表于 2019-12-15 21:22
本帖最后由 天空宫阙 于 2019-12-16 20:16 编辑


找到了这个接口,只要改page参数就可以了page= 0到19有内容
https://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=0&iOrder=0&iSortNumClose=1&jsoncallback=jQuery17108079906974233315_1576410038567&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1576410754875
可能有多余的参数懒得调试就这样一起提交算了

完整的代码

[Python] 纯文本查看 复制代码
import requests
import re
import json
import urllib.parse
from tqdm import tqdm
import time


headers ={
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'
}
def get_picSrc(page):
    url = 'https://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={}&iOrder=0&iSortNumClose=1&jsoncallback=jQuery17108079906974233315_1576410038567&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1576410754875'.format(str(page))
    response = requests.get(url,headers=headers)
    if response.status_code ==200:
        # print(response.text)
        temp = re.search('jQuery\d+_\d+\((.*?)\)',response.text,re.S)
        if temp:
            data = json.loads(temp.group(1))
            data_list = data['List']
            for item in data_list:
                sProdName = urllib.parse.unquote(item['sProdName'])
                sProdImgNo_8 = urllib.parse.unquote(item['sProdImgNo_8'])
                pic_src = sProdImgNo_8[:-3]+'0'
                pic_info ={
                    'sProdName':sProdName,
                    'pic_src':pic_src
                }
                yield pic_info

def downloadFILE(url,name):
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
    }
    resp = requests.get(url=url,stream=True,headers=headers)
    content_size = int(int(resp.headers['Content-Length'])/1024)
    with open(name, "wb") as f:
        print("Pkg total size is:",content_size,'k,start...')
        for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name):
            f.write(data)
        print(name , "download finished!")                
                

if __name__ == "__main__":
    for page in range(0,20):
        print('[info] page:',page)
        pic_infos = get_picSrc(page)
        for pic_info in pic_infos:
            print(pic_info)
            try:
                downloadFILE(pic_info['pic_src'],pic_info['sProdName']+'.jpg')
            except:
                continue
        time.sleep(3)


效果如图
王者荣耀皮肤爬虫.jpg

一共爬了390张,好像漏了5张,懒得做异常处理就这样吧。

代码中sProdImgNo_8的部分改成sProdImgNo_6就可以下载1920*1080格式的了,1到8分别是不同尺寸的,但左上还是有王者荣耀的水印,没有水印的是爬取英雄资料的背景图片是1920*822格式了,百度一下一大堆人已经写过了,就不写了。

下载完的文件有点大就不放了,放一个下载工具的链接,有py和封装成的exe,双击即可下载,不愧是腾讯的服务器,下载的真快。

py和封装成的exe:https://www.lanzouj.com/i81e7hc

记得在文件夹中运行,否则被图片铺满桌面不关我的事情。


免费评分

参与人数 10吾爱币 +9 热心值 +9 收起 理由
w694950582 + 1 + 1 谢谢@Thanks!
if70 + 1 + 1 谢谢@Thanks!请问能不能下载1920*1080尺寸的
FleTime + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
看床走不动路 + 1 + 1 谢谢@Thanks!
忘了世界的人 + 1 谢谢@Thanks!
Joke627 + 1 + 1 谢谢@Thanks!
计算器 + 1 + 1 用心讨论,共获提升!
曳尾于涂 + 1 + 1 景仰大神
GloryLong + 1 我很赞同!
迦南圣经 + 1 + 1 爬了一大堆,快满出来了

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

badyun 发表于 2019-12-15 22:05
本帖最后由 badyun 于 2019-12-15 22:26 编辑

看了下楼主的代码,用js复写了一遍

[JavaScript] 纯文本查看 复制代码
const superagent = require('superagent');
const fs = require('fs');

const downloadFile = async (url, filepath) => {
    const mypath = filepath
    const writer = fs.createWriteStream(mypath);
    superagent(url).pipe(writer)
    return new Promise((resolve, reject) => {
        writer.on("finish", resolve);
        writer.on("error", reject);
    });
};

(async () => {
    for (let i = 0; i <= 5; i++) {
        // 每页96个时,最多5页
        let s = await superagent.get('https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi')
            .query({
                sDataType: 'JSON',
                iListNum: 96,
                page: i,
                iActId: 2735
            })

        let result = JSON.parse(s.text).List
        for (let index in result) {
            let ele = result[index]
            let picInfo = {
                sProdName: decodeURIComponent(ele.sProdName),
                picSrc: decodeURIComponent(ele.sProdImgNo_8).replace('/200', '/0')
            }

            await downloadFile(picInfo.picSrc, './wangzhe/' + picInfo.sProdName + '.jpg')
        }
    }

})()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
FleTime + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

badyun 发表于 2019-12-15 22:27
&#65533;&#65533;&#1401;&#65533;&#65533;&#65533; &#65533;&#65533;&#65533;&#65533;&#65533;&#65533; 2019-12-15 22:14
&#65533;&#65533;&#65533;&#65533;&#128077;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1467;&#65533;&#65533;python&#65533;&#291;&#65533;&#65533;&#65533;&#938;&#65533;&#246;&#65533;&#65533;&#65533;&#65533;&#1910;&#65533;&#65533;&#65533;js&#65533;&#65533;&#574;&#65533;&#65533;&#938;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#1202;&#1127;&#65533;&#65533;&#1211;&#65533;&#65533;JavaScript&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; ...

哈哈,混淆的我看着也难受
头像被屏蔽
cayne 发表于 2019-12-15 21:28
迦南圣经 发表于 2019-12-15 21:37
牛皮!!!优秀,
迦南圣经 发表于 2019-12-15 21:38
能不能爬无水印的呀??
lxy56415653 发表于 2019-12-15 21:40
谢谢,学习了,很多心小东西,,,,
zhunxing358 发表于 2019-12-15 21:47
这个干嘛用?
 楼主| 天空宫阙 发表于 2019-12-15 21:51

爬着玩,抓包练习
 楼主| 天空宫阙 发表于 2019-12-15 21:54
迦南圣经 发表于 2019-12-15 21:38
能不能爬无水印的呀??

应该是可以的,没注意水印,就看了下图片很高清就下载了,有时间再改
迦南圣经 发表于 2019-12-15 21:57
天空宫阙 发表于 2019-12-15 21:54
应该是可以的,没注意水印,就看了下图片很高清就下载了,有时间再改

可以,坐等大佬修整2.0
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表