获取LOL所有在售皮肤的价格和发布日期
效果展示:
分析目标网站:
- LOL道聚城网址:https://daoju.qq.com/lol/list/17-0-0-0-0-0-0-0-0-0-0-00-0-0-1-1.shtml
- 在进入网站后,右键网站任意位置点击
查看页面源代码
,但在源代码中无法找到皮肤相关信息
- 返回网站,右键点
检查
或审查元素
,在弹出的控制台中点网络
或network
,如果没有显示数据的话,刷新一下网页就有了
- 在网络栏下找到
GoodsListApp.php?.....
开头的那个名称,然后点击右侧的预览,展开数据后发现其皮肤数据都在里面
- 在确认数据的所在位置后,点击负载查看其发送请求时,需要携带的全部参数
获取皮肤相关信息:
- 创建请求头,并分析所有需要携带的参数:
- 打开网站不同页码,对这些参数进行对比,可以发现参数:
page
:不同页面对应的页码数,整型_
:一个13位的时间戳,整型- 而其他参数则都相同
# 请求链接
self.url = "https://apps.game.qq.com/daoju/v3/api/hx/goods/app/v71/GoodsListApp.php?"
# 请求头
self.headers = {"referer": "https://daoju.qq.com/","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36 Edg/101.0.1210.32"
}
# 发送请求需要携带的参数
self.params = {"view": "biz_cate","page": int,"pageSize": 16,"orderby": "dtShowBegin","ordertype": "desc","cate": 17,"appSource": "pc","plat": 1,"output_format": "jsonp","biz": "lol","_": int(time.time() * 1000)
}
- 找到参数的规律后,发送请求,并解析请求返回的数据,这里使用re正则表达式进行筛选
def get_data(self):# 初始化字典all_skins_data = dict()# 循环请求页面for i in range(1, 51):# 请求间隔time.sleep(1)# 参数页码self.params['page'] = i# 发送请求res = requests.get(self.url, headers=self.headers, params=self.params)# 提取数据skins_list = self.data_format(res.text)# 添加进字典all_skins_data[f"lol道具城第<{i}>页"] = skins_list# 保存数据self.save_data(all_skins_data)def data_format(self, data):# 筛选当页所有皮肤名称skin_name_list = re.findall(r'"propName":"(.*?)"', data)# 筛选当页所有皮肤价格skin_price_list = re.findall(r'"iDqPrice":"(\d+)"', data)# 筛选当页所有上架日期skin_date_list = re.findall(r'"dtBegin":"(.*?)"', data)skins_list = []for i in range(0, len(skin_name_list)):item = dict()# 皮肤名称item["skin_name"] = str(skin_name_list[i]).encode('utf8').decode('unicode_escape').replace("\\", "")# 皮肤价格(点券)item["skin_price"] = skin_price_list[i]# 皮肤上架日期item["skin_date"] = skin_date_list[i]skins_list.append(item)# 展示数据print(item)return skins_list
- 把筛选后的数据保存到本地,这里采用json格式:
def save_data(self, all_skins_data):# JSON序列化json_data = json.dumps(all_skins_data, indent=1, ensure_ascii=False)with open("lol_skins_data.json", "w", encoding="utf-8") as w:w.write(json_data)
完整版代码:
- 这个是我平时做爬虫练习时,汇总的案例的其中之一,代码比较适合新手学习,该Github仓库的爬虫案例也会在以后不断更新,有兴趣学习爬虫的可以来捧捧场哦QwQ。仓库链接:https://github.com/cjladmin/spider_cases
import requests
import time
import re
import jsonclass LolSkins:def __init__(self):self.url = "https://apps.game.qq.com/daoju/v3/api/hx/goods/app/v71/GoodsListApp.php?"self.headers = {"referer": "https://daoju.qq.com/","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36 Edg/101.0.1210.32"}self.params = {"view": "biz_cate","page": int,"pageSize": 16,"orderby": "dtShowBegin","ordertype": "desc","cate": 17,"appSource": "pc","plat": 1,"output_format": "jsonp","biz": "lol","_": int(time.time() * 1000)}def get_data(self):# 初始化字典all_skins_data = dict()# 循环请求页面for i in range(1, 51):# 请求间隔time.sleep(1)# 参数页码self.params['page'] = i# 发送请求res = requests.get(self.url, headers=self.headers, params=self.params)# 提取数据skins_list = self.data_format(res.text)# 添加进字典all_skins_data[f"lol道聚城第<{i}>页"] = skins_list# 保存数据self.save_data(all_skins_data)def data_format(self, data):# 皮肤名称skin_name_list = re.findall(r'"propName":"(.*?)"', data)# 皮肤价格skin_price_list = re.findall(r'"iDqPrice":"(\d+)"', data)# 上架日期skin_date_list = re.findall(r'"dtBegin":"(.*?)"', data)skins_list = []for i in range(0, len(skin_name_list)):item = dict()item["skin_name"] = str(skin_name_list[i]).encode('utf8').decode('unicode_escape').replace("\\", "")item["skin_price"] = skin_price_list[i]item["skin_date"] = skin_date_list[i]skins_list.append(item)# 展示数据print(item)return skins_listdef save_data(self, all_skins_data):# JSON序列化json_data = json.dumps(all_skins_data, indent=1, ensure_ascii=False)with open("lol_skins_data.json", "w", encoding="utf-8") as w:w.write(json_data)if __name__ == '__main__':lol = LolSkins()lol.get_data()
获取LOL所有在售皮肤的价格和发布日期相关推荐
- 爬虫获取王者荣耀全英雄皮肤
爬虫获取王者荣耀全英雄皮肤 # coding=utf-8import os,requests,shutil""" 王者荣耀全英雄皮肤 """ ...
- Web网页自动化实战《4.获取所有酒店的名字、价格、评分信息,并写入文件》上篇...
目录 一.find_elements()的作用 1.获取当前页面中所有酒店名称的元素 2.获取当前页面中所有酒店价格的元素 3.获取当前页面中所有酒店评分的元素 二.分别拿到每家的价格.评分.酒店名并 ...
- Web网页自动化实战《4.获取所有酒店的名字、价格、评分信息,并写入文件》上篇
一.find_elements()的作用 1.获取当前页面中所有酒店名称的元素 通过元素的class属性获取酒店名,获取到了20个 这20个酒店展示的格式都是一样的.每个div都是独立的.每个div都 ...
- linux中用shell获取昨天、明天或多天前的日期
linux中用shell获取昨天.明天或多天前的日期时间 2015-12-08 09:33:00 BlogJava-专家区 原文 http://www.blogjava.net/xzclog/arch ...
- hive:函数:日期比较函数:获取当前日期 + date_add + date_sub函数获取前几天或后几天的日期
获取当前日期: 方式1: select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') curr_date; 返回: 2020-09-17 ...
- 获取自然月之前或者自然月之后的日期
1.获取n个月之前 /*** @author: yaoxueke* @description: 获取几个月前的日* @param date 日期* @param num 几个月* @return {* ...
- js获取7天前,n天前的日期,7天后,n天后的日期,获取当前日期是周几
前言: 1. js获取7天前,n天前的日期,7天后,n天后的日期, 2.获取当前日期是周几 js方法: 1.获取指定日期,传参数进去,传的是正值,则是今天之后的日期.传的负值则是今天之前的日 ...
- iPhone 13 发布日期、规格、预期价格等信息超全汇总
iPhone 13 的发布指日可待,关于iPhone13你都有哪些想要了解的呢?macw为大家带来各种信息汇总,iPhone13发布日期.规格.价格等,你想了解的这儿都有! iPhone 13 发布日 ...
- Windows 12:发布日期、新功能、价格、硬件要求
距离Windows 11首次发布仅一年时间,但关于 Windows 12 的传言已经开始四处流传.有报道称,微软正计划切换到Windows 的新更新周期,未来几个月将不会发布 Windows 11 2 ...
- 根据年份获取所有周次及每周的开始-结束日期
封装数据的实体类 @Data public class DateRange {// 周数private int week;// 当前周开始日期private Date startDate;// 当前周 ...
最新文章
- python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解
- 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter
- Spring AOP相关术语解释及简单使用
- vue商城项目开发:浏览器自动访问、路由样式修改及定义和导入组件
- 益生菌可能导致的“菌血症”与死亡(调研手稿六)
- 单片机串行通信全解析
- POJ 1189 钉子和小球
- setseed_Java Random setSeed()方法与示例
- mysql8.0.11创建用户报错_mysql8.0创建用户授予权限报错解决方法
- Varnish的基本应用详解
- 文献解读:结构方程模型SEM基础,小白看这个就基本够了
- 软件质量保证管理办法
- html英文期刊参考文献,英文参考文献标准格式
- NOIP模拟赛 魔方
- 可以这样理解 TIM_INIT(arr,psc)重装载值和分频值
- app端-留存分析-周留存率报表开发
- php删除双引号,php如何去除引号
- codeblock的c语言编译,CodeBlocks无法编译的原因和解决办法
- 接受密码和用户名,若用户名为‘admin‘,密码为‘‘123456‘则显示用户登录成功,否则一直登录
- Echarts实现省级到市级地图下钻
热门文章
- 《自控力》读书笔记思维导图
- 通过exchangelib库连接到公司exchange邮箱
- Androidstudio之菜单栏设置
- 关于matlab 画水平线
- physx: pid balance controll
- vue3 + router-view + keepalive parentComponent.ctx.deactivate is not a function
- QT学习教程(全面)
- nowcoder contest#115 江西财经大学第一届程序设计竞赛 G 小Q的口袋校园 记忆化搜索 DP
- CobaltStrike逆向学习系列(15):CS功能分析-BOF
- mapgis明码文件转为点线面文件_MapGIS明码文件的获得和在坐标转化中的应用研究(2)...