python爬取王者_python学习--第二天 爬取王者荣耀英雄皮肤

今天目的是爬取所有英雄皮肤

在爬取所有之前,先完成一张皮肤的爬取

打开anacond调出编译器Jupyter Notebook

打开王者荣耀官网

下拉找到位于网页右边的英雄/皮肤

点击【+更多】

1415551-20180606163007378-1694428273.png

进入英雄皮肤页面

按键盘F12调出网页代码

点击进入调出页的【Network】(这里是谷歌浏览器,其他浏览器可能显示为’网络‘)

1415551-20180606163154890-1350756213.png

刷新网页 重新接收所有网页数据(不要关闭调出的Network页)

刷新后在Network下会看到所有的数据重新加载处来

找到名为【herolist.json】的json文件(有两个随便选中一个就行

1415551-20180606163543877-425905947.png

看右边会有这个文件的说明 复制这个json文件的URL地址:

1415551-20180606163750788-1311278319.png

浏览器打开一个新窗口将地址粘贴进去,此时浏览器会自动下载【herolist.json】文件

在文件夹中能找到它

1415551-20180606164110971-519182339.png

此时将程序写到这里

import urllib.request

import json

import os

v_herolist_url= urllib.request.urlopen('http://pvp.qq.com/web201605/js/herolist.json')

v_herolist= v_herolist_url.read()

当print(v_herolist)时,编译器底下会出现如下内容:

1415551-20180606164857514-1528631922.png

显示的\xe5\xbb这些是Unicode编码,要对它进行解码

v_herolist=v_herolist_url.read().decode('utf-8')

转换为json格式

hero_json=json.loads(v_herolist)

但此时输出的话会报错:

hero_json=json.loads(v_herolist)

print(hero_json) #报错,自己百度

v_herolist=v_herolist.encode('utf8')[3:].decode('utf-8')

1415551-20180606203137767-134259953.png

此时对其进行反编码并切掉python自动加入的编码方式声明’\xef\xbb\xbf‘

v_herolist=v_herolist.encode('utf8')[3:].decode('utf-8')

hero_json=json.loads(v_herolist)print(hero_json)

爬取一张图片:

打开王者荣耀英雄/皮肤页面,随便选取一个英雄,在显示皮肤图片位置右击选中检查

1415551-20180606204015642-1999149442.png

在元素页面中会有图片的地址:

1415551-20180606204204539-285769768.png

复制地址 并在首部加上 【http:】

创建本地文件夹存放图片

#创建本地文件夹

hero_dir='D:\python practice\myhero\\' #文件夹后面要加两个‘\\’!!

if not os.path.exists(hero_dir): #如果不存在这个文件夹 自动创建

os.mkdir(hero_dir)

爬取这张皮肤图片

skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/131/131-bigskin-2.jpg'hero_img= hero_dir+"aa.jpg"urllib.request.urlretrieve(skin_url,hero_img)#这里只是爬取到了一张 如何爬取多张?

爬取成功:

1415551-20180606205017850-539509867.png

1415551-20180606205134349-378025325.png

完整程序代码:

#王者荣耀皮肤爬取

importurllib.requestimportjsonimportos#爬取皮肤的json文件

v_herolist_url=urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")

#请求

v_herolist=v_herolist_url.read().decode('utf-8') #要进行python字符串切割#解码

#截取#\xef\xbb\xbf 是python自动加入的编码方式声明 可以用正则表达式v_herolist=v_herolist.encode('utf8')[3:].decode('utf-8')

hero_json=json.loads(v_herolist)

#创建本地文件夹

hero_dir='D:\python practice\myhero\\'

if not os.path.exists(hero_dir):

os.mkdir(hero_dir)

skin_url= 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/131/131-bigskin-2.jpg'hero_img= hero_dir+"aa.jpg"urllib.request.urlretrieve(skin_url,hero_img)

以下为多张皮肤爬取(只贴代码,有空详细解释):

#爬虫 -- 王者荣耀

importurllib.requestimportjsonimport os #对计算机的操作#json文件

v_herolist_url = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")

#请求

v_herolist = v_herolist_url.read().decode('utf-8')

#字符串的截取BOM脚本#\xef\xbb\xbf -- python 自动加入的编码方式声明

v_hero = v_herolist.encode('utf8')[3:].decode('utf-8')#转换json格式#返回一个变量

hero_json =json.loads(v_hero)#获取长度

hero_num =len(hero_json)#皮肤网址#http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/167/167-bigskin-5.jpg

#创建本地文件夹

hero_dir = 'D:\python practice\myhero\\'

if notos.path.exists(hero_dir):

os.mkdir(hero_dir)

for num inrange(hero_num):

skinsname= hero_json[num]['skin_name'].split("|")for i inrange(len(skinsname)):

skin_name= hero_json[num]['ename']

#皮肤的数字标记

#皮肤地址

skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(skin_name)+'/'+str(skin_name)+'-bigskin-'+str(i+1)+'.jpg'

#要保存的地址

save_url=hero_dir+str(skin_name)+"_"+str(i+1)+".jpg"urllib.request.urlretrieve(skin_url,save_url)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值