爬取王者荣耀皮肤
爬取王者荣耀皮肤
思路
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)