Skip to content

Latest commit

 

History

History
270 lines (222 loc) · 5.91 KB

575-792526-爬取异步数据_xhr_json_处理json.sy.md

File metadata and controls

270 lines (222 loc) · 5.91 KB
show version enable_checker
step
1.0
true

爬取图片数据

回忆

  • 上次爬了汉字源
  • 图片不只是可以单独存在
  • 也可以嵌入到网页中的
  • 应该注意到请求头里面可以放东西
  • 爬取的时候可以利用原来网页整体的结构
  • 图片爬完了
  • 还能爬点什么呢?

我想去爬取dota

  • 先f12调出查看器
    • 然后再点击网络

图片描述

  • 找到英雄资料模块

选择英雄

  • 在选择英雄界面
    • 先把网络清空

图片描述

  • 然后选择一个英雄

找到json数据

  • 点击英雄之后
    • 发现后台有json文件被请求

图片描述

  • 将其在新标签页打开
    • 或者复制url
    • 并将其在新标签页中打开

打开json文件

  • 这是103个英雄
    • 上古巨神

图片描述

  • 上古巨神
    • 来自于war3当中的牛头人酋长
  • 游戏的变化就是时代的变化
    • 从牛头人酋长到上古巨神
    • 从 战争践踏 到 回音重踏
    • 从 war3地图编辑器 到 dota2
    • 从rts发展到了moba
    • 从个人地图开发者到steam开发运营
    • 一代人从年轻走向中年
    • 唯一不变的就是变化
  • 如何解读这个json呢?

解读json

图片描述

  • 先校验格式化
  • JSON点击 在线解析
  • 从这个数据结构中找到我们需要的数值

在线解析

  • 整体来说这是个字典

图片描述

  • 我们要的数据都在result对应的字典项里

编码

图片描述

  • 运行结果

图片描述

  • 可以把所有的英雄都遍历一遍吗?

建立循环

  • 尝试遍历

图片描述

  • 代码如下
import requests
import json
for num in range(1,500):
    response = requests.get("https://www.dota2.com.cn/datafeed/hero?hero_id=" + str(num))
    #print(num,"=========================")
    if response.status_code == 200:
        try:
            data = json.loads(response.content)["result"]
            id = data["heroes"]["order_id"]
            name = data["heroes"]["name_loc"]
            damage = data["heroes"]["damage_min"]
            hp = data["heroes"]["max_health"]
            print(id,name,damage,hp,sep=",")
        except Exception as e:
            print(e)
  • 输出重定向到dota2.csv

数据文件

  • 删除无关行

图片描述

  • 再删除

图片描述

  • 得到当前的123名英雄数据

英雄数据

1,敌法师,53,620
2,斧王,55,700
70,祸乱之源,55,640
47,血魔,57,680
3,水晶室女,44,540
5,卓尔游侠,49,520
6,撼地者,49,640
46,主宰,50,600
10,米拉娜,48,560
11,变体精灵,33,640
39,影魔,41,580
75,幻影长矛手,52,580
13,帕克,45,540
14,帕吉,70,700
15,雷泽,45,640
16,沙王,47,640
18,风暴之灵,47,620
19,斯温,63,640
28,小小,61,800
21,复仇之魂,46,580
22,风行者,44,560
24,宙斯,55,580
49,昆卡,50,680
8,莉娜,51,600
9,莱恩,47,560
17,暗影萨满,65,660
25,斯拉达,51,620
20,潮汐猎人,52,740
23,巫医,51,560
7,巫妖,48,600
48,力丸,59,560
26,谜团,43,620
40,修补匠,52,580
34,狙击手,40,580
12,瘟疫法师,47,560
59,术士,49,680
36,兽王,54,660
51,痛苦女王,49,560
30,剧毒术士,46,580
27,虚空假面,56,600
52,冥魂大帝,60,640
62,死亡先知,47,620
80,幻影刺客,54,580
35,帕格纳,45,580
86,圣堂刺客,53,620
29,冥界亚龙,48,620
82,露娜,50,620
58,龙骑士,55,620
4,戴泽,47,560
31,发条技师,50,720
38,拉席克,49,600
32,先知,50,620
61,噬魂鬼,47,700
33,黑暗贤者,54,640
68,克林克兹,37,520
57,全能骑士,54,660
37,魅惑魔女,45,540
54,哈斯卡,41,600
42,暗夜魔王,63,660
53,育母蜘蛛,48,560
64,赏金猎人,54,600
41,编织者,54,520
55,杰奇洛,53,700
56,蝙蝠骑士,39,760
50,陈,46,700
44,幽鬼,48,660
43,远古冰魄,44,600
45,末日使者,58,680
63,熊战士,42,700
66,裂魂人,59,760
78,矮人直升机,42,640
60,炼金术士,50,660
67,祈求者,44,560
65,沉默术士,43,580
69,殁境神蚀者,49,620
72,狼人,50,720
74,酒仙,52,660
71,暗影恶魔,51,660
73,德鲁伊,38,560
79,混沌骑士,51,640
91,米波,46,680
76,树精卫士,87,700
77,食人魔魔法师,69,660
84,不朽尸王,57,640
81,拉比克,52,620
85,干扰者,49,620
88,司夜刺客,45,540
87,娜迦海妖,44,620
89,光之守卫,43,560
83,艾欧,45,540
90,维萨吉,45,640
94,斯拉克,55,600
96,美杜莎,48,540
97,巨魔战将,50,620
93,半人马战行者,63,740
92,马格纳斯,57,700
95,伐木机,52,700
99,钢背兽,52,640
98,巨牙海民,50,660
100,天怒法师,41,620
102,亚巴顿,50,640
101,上古巨神,49,720
105,军团指挥官,60,700
108,工程师,46,580
103,灰烬之灵,55,640
104,大地之灵,47,640
112,孽主,62,700
107,恐怖利刃,52,520
106,凤凰,49,660
109,神谕者,39,600
110,寒冬飞龙,40,640
111,天穹守望者,51,640
113,齐天大圣,51,560
114,邪影芳灵,48,600
115,石鳞剑士,51,540
116,天涯墨客,46,620
120,森海飞霞,46,540
119,虚无之灵,54,640
118,电炎绝手,46,600
117,玛尔斯,49,660
121,破晓辰星,56,740
122,玛西,56,660
0,獸,62,720
  • 后续可以再进行入库、排序、筛选等操作

总结🤔