Python爬取王者荣耀英雄头像_保存数据

今天王者荣耀S27赛季更新了,赛季更新不仅优化了局部的画面,而且在性能上得到了提升,新赛季的开始,王者峡谷又开始了新的一轮竞技,王者荣耀一款陪伴我走过大学时光的网络手游。

基于此作者运用所学的爬虫知识,借助Python工具爬取王者荣耀官网的英雄人物头像,Python爬虫爬取网页图片可以分为四步:明确目的、发送请求、数据解析、保存数据,下面一起学习。

PS:​​爬取旅游景点评论数据,并可视化​



示例工具:anconda3.7

本文讲解内容:Python爬取图片

适用范围:网页解析、图片爬取




代码获取

公众号后台回复

0414

获取本文完整代码

明确目的

打开王者荣耀英雄介绍主页,该主页包含很多种英雄的头像图片,主页网址链接如下。


​https://pvp.qq.com/web201605/herolist.shtml​


Python爬取王者荣耀英雄头像_保存数据_02

发送请求

使用requests库发送请求,返回状态码显示为200,服务器连接正常。

import requests
u='https://pvp.qq.com/web201605/herolist.shtml'
respnotallow=requests.get(u)
print('状态码:{}'.format(response.status_code))
if response.status_code != 200:
pass
else:
print("服务器连接正常")

Python爬取王者荣耀英雄头像_数据分析_03

数据解析

在数据解析之前,需要提前安装pyquery,pyquery库类似于Beautiful Soup库,初始化的时候,需要传入HTML文本来初始化一个PyQuery对象,它的初始化方式包括直接传入字符串,传入URL,传入文件名等等,这里传入URL,并且查找节点。

#解析数据
from pyquery import PyQuery


doc=PyQuery(html)
items=doc('.herolist>li')#.items()
print(items)

Python爬取王者荣耀英雄头像_保存数据_04

同时遍历,使用find函数查找子节点,遍历爬取图片URL和图片名。

for item in items:
url=item.find('img').attr('src')
#print(url)
urls='http:'+url
name=item.find('a').text()
#print(name)
url_cnotallow=requests.get(urls).content


保存数据

最后保存数据,需要提前新建一个文件夹用于数据存储,同时,存储数据的代码需要写在for循环里面,不然只会保存一张图片。

with open('C:/Users/尚天强/Desktop/王者荣耀picture/'+name+'.jpg','wb') as file:
file.write(url_content)
print("正在下载%s......%s"%(name,urls))

同时加一个计时器,用于计时图片爬取的时长,这里显示图片爬取共计耗时7.03秒。

import time
start=time.time()

end=time.time()
print('图片爬取共计耗时{:.2f}秒'.format(end-start))

Python爬取王者荣耀英雄头像_html_05

爬取过程动态演示如下,运行过程很快。

Python爬取王者荣耀英雄头像_数据分析_06

以上我们成功将王者荣耀的英雄人物头像爬取下来,代码文件中有高清头像。

Python爬取王者荣耀英雄头像_数据分析_07

将代码进行封装,完整版代码如下,如果你也感兴趣的话可以自己实际运行试一试,爬取生成结果。

import time
start=time.time()


import requests
from pyquery import PyQuery


#确定目标
url="https://pvp.qq.com/web201605/herolist.shtml"
#发送请求
html=requests.get(url).content
#print(html)
#解析数据
doc=PyQuery(html)
items=doc('.herolist>li').items()
#print(items)


for item in items:
url=item.find('img').attr('src')
#print(url)
urls='http:'+url
name=item.find('a').text()
#print(name)
url_cnotallow=requests.get(urls).content

#保存数据
with open('C:/Users/尚天强/Desktop/王者荣耀picture/'+name+'.jpg','wb') as file:
file.write(url_content)
print("正在下载%s......%s"%(name,urls))
print("下载完毕")


end=time.time()
print('图片爬取共计耗时{:.2f}秒'.format(end-start))


喜欢就转发分享一下吧~


三年互联网数据分析经验,擅长Excel、SQL、Python、PowerBI数据处理工具,数据可视化、商业数据分析技能,统计学、机器学习知识,持续创作数据分析内容,点赞关注,不迷路。



和作者一起学习数据分析!


👆点击关注干货速递👆