我们应该自觉遵守君子协议(爬虫协议的俗称),掌握爬虫的技术。
在对应网址之后增加 /robots.txt, 即可查看爬虫协议,知道哪些页面是不可爬取的,爬虫协议具体内容可自行百度了解。
例如: https://www.baidu.com/robots.txt
网站可以识别出是程序还是浏览器访问的, 具有反爬虫措施, 所以需要进行伪装, 伪装需要添加用户代理(User-Agent)
查找方法1: 网址中输入 about:version
查找方法2: 查看请求头的中User-Agent
操作流程:在任意页面,比如:百度搜索页,首先点一下鼠标右键,点击检查。接着,点击Network,点击页面刷新,在Name下点击任意一条,比如:www.baidu.com。最后,在Headers中滑到最下方,找到User-Agent,复制用户代理。
三,爬虫代码:
流程:
明确目标,爬取王者荣耀全皮肤;
分析过程,进网站通过抓包了解皮肤图片的存储位置;
拆解步骤,找出皮肤图片的存储规律,把实现步骤拆解成若干个;
逐步运行,获取需要的参数,完善代码;
注意事项:
添加用户代理,进行伪装
新建同级文件夹pic,方便存储皮肤图片;
加快运行效率,可参考提高爬虫效率的技术
具体操作流程,可参考其他文章资源,此处只有效果
文件构架:
第一层:
mySpider(总文件夹,用来练习爬虫技术)
第二层:
–pic(文件夹,用来储存皮肤图片)
–rongyao.py(python文件,用来爬取荣耀全皮肤)
代码:
运行条件:代码中添加用户代理,总文件夹下新建pic文件夹(要与python文件在同一级哦)。
1.导入所需模块
import requests
2.读取json文件
url = ‘http://pvp.qq.com/web201605/js/herolist.json’
headers = {‘User-Agent’:‘此处省略,替换成自己的用户代理’} # 添加用户代理
response = requests.get(url, headers=headers)
json_list= response.json()
print(len(json_list)) # 英雄总数量:95个英雄
print(json_list) # 打印结果,了解json_list的构造
try:
# 3.提取json文件,下载图片
for m in range(len(json_list)):
# 英雄编号
hero_num = json_list[m][‘ename’]
# 英雄名称
hero_name = json_list[m][‘cname’]
# 获取皮肤列表
skin_name = json_list[m][‘skin_name’].split(’|’)
# 统计皮肤数量
skin_count = len(skin_name)
print(‘英雄名称:’,hero_name,’ 皮肤数量:’,skin_count) # 打印英雄的皮肤数量
# 遍历每一个图片网址
for i in range(1, skin_count + 1):
# 网址拼接, 构造完整的图片网址
url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' # 图片网址固定前缀
url_pic = url + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(i) + '.jpg'
# 获取图片信息
picture = requests.get(url_pic).content
# print(picture) # 打印图片网址
# 下载图片 文件路径为: pic/英雄名-皮肤名.jpg (需要新建pic文件夹)
with open('pic/'+ hero_name + ' - ' + skin_name[i - 1] + '.jpg', 'wb') as f:
f.write(picture)
except KeyError as e:
# 捕获异常:解决皮肤名称全部打印完成后会报错的问题
print(‘程序执行完毕!’)
最终结果:
四,python文件打包技术:
已将python文件转为exe可执行文件,下载后运行exe文件即可,例如:我们的电脑桌面的那些应用就是一个个exe文件。其中使用的python文件打包技术(下面提供跳转链接),比较简单,成功后可用像电脑软件一样直接运行在后台,也方便分享给小伙伴哦。
爬虫程序下载链接,如下:
链接:https://pan.baidu.com/s/1L7DTYzkv_zRqX9zyAEZwhw
提取码:0kzw
复制这段内容后打开百度网盘手机App,操作更方便哦
由于多人频繁使用,该程序可能已失效,在这仅作参考,建议自行将python文件打包成可执行文件。
想要学习python文件打包技术,点击右边的链接即可:python文件打包技术
五,提高爬虫效率的方法
普通的代码爬取数据的效率较低,若数据变多,那么等待时间会大大加长,如何缩短爬取数据的时间,我们可以了解一些提高爬虫效率的方法。
以上实现了文件打包,直接在电脑上运行即可,无需使用python编辑器~
更多方法请点击跳转:提高爬虫效率的方法