Python爬虫案例与实战:爬取某游戏Top100选手信息
在实际生活或工作当中,有时需要在网络上查找榜单排行榜之类的数据,如高考前有必要在网络上查找全国大学排名或者专业排名,为毕业生报考提供参考依据,为方便进行类似的数据分析研究,将网页的表格存储到本地是必需的,本章案例将展示使用Python爬虫工具,从在线网站爬取表格并保存成如 Excel或CSV文档等可以重复使用编辑的形式,从网页获取表格的方式多种多样,本案例会根据网页的元素和特性选择合适的方案来编写爬虫。本案例针对同一个目标网站,请求使用的是Python的 Requests库,解析时用了Python的两种不同解析方法—JSON 和 BeautifulSoup(BS4)进行讲解,存储方案使用 CSV。
2.1 JavaScript对象与JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语言,这即易于人阅读和编写。同时也易于机器解析和生成,并有效地提升网络的传输效率。JSON 是JavaScript对象的字符串表示法,它使用文本表示一个JavaScript对象的信息,本质是一个字符串。任何支持的类型都可以通过JSON 来表示,如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
1.对象
对象在 JavaScript 中是使用花括号({})包裹起来的内容,数据结构为{keyl:valuel,key2:
value2,.}的键值对结构。在面向对象的语言中,key为对象的属性,value 为对应的值。键
名可以使用整数和字符串来表示。值的类型可以是任意类型。
2.数组
数组在JavaScript中是方括号([])包裏起来的内容,数据结构为[“java”,“javascript”,
“vb”,]的索引结构。在JavaScript中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。
例如,用对象的方式表示一个人的个人信息:
tom = {
name: 'Jack',
age: '24',
stature: 170,
gender: 'man'
}
然后,可以用对象和数组并用的方式表示,比如多个人的个人信息用一个JavaScript对象表示。
data = [
{
name: 'Jack',
age: '24',
stature: 170,
gender: 'man'
},
{
name: 'Mike',
age: '23',
stature: 174,
gender: 'man'
}
]
这种方式下用数组的索引访问某一个对象,然后使用键值对的方式访问对象内的元素。
在 Python语言中,可以使用JSON库对 JSON 字符串解析得到JavaScript对象,同时利用 Python字典这一键值索引访问方式并存的数据结构来访问JavaScript对象存储的数据。
2.2爬取方案分析
本案例将从5E游戏平台上爬取某游戏 TOP 100的选手信息,一种方案是爬取用于表格显示的JSON 对象,这种方案的思路与代码量相对简单;另一种则是用 BeautifulSoup库分析网页HTML 文本的子节点内容获取表格元素。