广告区
广告区
关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)
发布于2022-08-01 17:32 阅读(246) 评论(0) 点赞(22) 收藏(2)
嗨喽~大家好呀,这里是魔王呐
Python 3.8
Pycharm
requests —> 数据请求模块 需要安装 pip install requests
re 正则表达式 内置模块 不需要安装
os 文件操作模块 内置模块 不需要安装 --> 自动创建文件夹 把每个英雄都自动创建对应文件
确定需求, 确定采集目标
通过开发者工具抓包分析, 分析我们想要数据内容来自于那个url地址
F12 或者 鼠标右键点击检查 选择 network(网络) 刷新网页
去分析图片url地址是什么 —> 选择 Img 可以查找图片url地址
505 表示英雄ID
2 皮肤第几个 —> 通过皮肤名字对应他的皮肤链接
想要获取 yao 皮肤数据
# 导入数据请求模块 ---> 第三方模块 需要 在cmd里面进行安装 pip install requests import requests # 导入正则模块 ---> 内置模块 不需要安装 import re # 导入文件操作模块 ---> 内置模块 不需要安装 import os # 确定网址 link = 'https://pvp.qq.com/web201605/js/herolist.json' # 模拟伪装浏览器 ---> 请求头 headers = { # user-agent 用户代理 表示浏览器基本身份标识 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 发送请求 json_data = requests.get(url=link, headers=headers).json() # for循环遍历 for index in json_data: # 字典键值对取值 根据冒号左边的内容[键],提取冒号右边的内容[值] hero_id = index['ename'] hero_name = index['cname'] # 设定文件夹路径 相对路径 file = f'img\\{hero_name}\\' if not os.path.exists(file): os.makedirs(file) """ 1. 发送请求, 模拟浏览器对于url地址发送请求 - headers 字典数据类型, 构建完整键值对 - 请求头参数 可以直接在开发者工具复制粘贴 - 使用什么请求方法, 根据开发者工具来 """ # 确定请求url地址 url = f'https://pvp.qq.com/web201605/herodetail/{hero_id}.shtml' # 模拟伪装浏览器 ---> 请求头 headers = { # user-agent 用户代理 表示浏览器基本身份标识 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 发送请求 ---> <Response [200]> 响应对象: <>表示对象 response 响应回复 200 状态码 表示请求成功 response = requests.get(url=url, headers=headers) # 乱码了 怎么办? ---> 你要根据网页编码来 response.encoding = 'gbk' # 自动识别编码 response.encoding = response.apparent_encoding # 获取数据, 获取服务器返回响应数据 文本数据 print(response.text) """ 解析数据 re正则 会1 不会2 re.findall() 从什么地方 去找什么数据 从 response.text 里面 去找 data-imgname="(.*?)"> 其中 (.*?) 就是我们要的数据 """ title_list = re.findall('data-imgname="(.*?)">', response.text)[0] # 鹿灵守心&0|森&0|遇见神鹿&71|时之祈愿&94|时之愿境&42 title_list = re.sub('&\d+', '', title_list).split('|') print(title_list) # for循环 for num in range(1, 6): len() 统计列表元素个数 for num in range(1, len(title_list) +1): # 列表取值, 根据索引位置,索引位置从0开始计数 img_name = title_list[num-1] # 构建图片url地址 img_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{num}.jpg' print(img_name, img_url) # 保存数据 ---> 发送请求 获取数据 二进制数据 img_content = requests.get(url=img_url, headers=headers).content with open(file + img_name + '.jpg', mode='wb') as f: f.write(img_content)
关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)
关注公众号回复python,免费领取 全套python视频,回复充值+你的账号,免费为您充值1000积分
作者:伤心太平洋
链接:https://www.pythonheidong.com/blog/article/1630384/8a4dcbfabd471ac082a9/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!