爬取王者荣耀皮肤

爬取王者荣耀皮肤

思路

1.进入官网查看每个详细页面的网址

2.循环获取每个详细页面的网址,向详细网址发送请求

3.进入详细页面,查看图片加载方式

4.切换小图标时,背景图会变化,背景图为所要的数据

 

 

 

 5.打开网络源码,发现背景图所在位置,但只有一个地址,所以推测为js加载方式

 6.通过切换小图标,url地址在变化,发现得到的地址是图片地址

 

 7.所以可以识别,有多少个小图标就有多少个大图片,通过改变数字就可获取图片地址

代码执行

# 调用
import os
import time
from bs4 import BeautifulSoup
import requests
import re
# 判断存储文件夹是否存在
if not os.path.exists(r"pifu"):
    # 不存在则执行
    os.mkdir(r"pifu")
# 发送请求
res=requests.get('https://pvp.qq.com/web201605/herolist.shtml')
# 构造对象
all=BeautifulSoup(res.text,'lxml')
# 获取每个网址的大致位置
hero=all.select('div.herolist-content > ul> li > a')
# 为补充完整网址准备
baselink='https://pvp.qq.com/web201605/'
# 循环获取信息
for li in hero:
    # 补全图片地址
    hero_url=baselink+li.get('href')
    # print(hero_url)
    # 发送请求
    res1=requests.get(hero_url)
    # 进行字符编码
    res1.encoding='gbk'
    # 构造对象
    img_info=BeautifulSoup(res1.text,'lxml')
    # 获取大致图片地址
    img_url=img_info.select('body > div.wrapper > div.zk-con1.zk-con')[0].get('style')
    # 通过正则获取详细地址
    true_url=re.findall('/.*g',img_url)
    # 补全网络地址
    img_real_url='https:'+true_url[0]
    # print(img_real_url)
    # 获取所有小图标,用于计数
    everyimg_list=img_info.select('div.pic-pf>ul')
    # print(str(everyimg_list).count('amp'))
    # 循环获取图片
    for i in  range(str(everyimg_list).count('amp')-1):
        # 因为i为0,没有该网址没所以加1
        a=i+1
        # 发送请求
        res2=requests.get(img_real_url.replace('-1','-%s'%a))
        # 配置路径
        fath_path=os.path.join(r'pifu',img_real_url.replace('-1','-%s'%a)[-17:])
        # 创建文件
        with open(fath_path,'wb') as f:
            # 写入数据
            f.write(res2.content)
    # 没爬取一个英雄,执行延迟
    time.sleep(0.5)

结果

返回目录

posted @ 2021-10-11 19:33  微纯册  阅读(93)  评论(0编辑  收藏  举报