3.4.1 爬取王者荣耀英雄皮肤实战

devtools/2024/10/22 8:21:41/

第四节:爬取王者荣耀英雄皮肤实战

课程目标

  • 爬取王者荣耀英雄皮肤实战

课程内容

编码实现
爬虫部分
python">import requests  # 导入requests库,用于发送HTTP请求
from fake_useragent import UserAgent  # 导入UserAgent库,用于生成随机的User-Agent
import time  # 导入time库,用于添加延时
import bs4  # 导入BeautifulSoup库,用于解析HTMLimport os  # 导入os库,用于操作文件系统# 设置目标网页的URL
url = "https://pvp.qq.com/web201605/herolist.shtml" # 创建UserAgent对象,用于生成随机User-Agent
us = UserAgent()# 设置HTTP请求的headers,模拟浏览器访问
headers = {"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","cache-control": "max-age=0","priority": "u=0, i","sec-ch-ua": "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"Microsoft Edge\";v=\"128\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","sec-fetch-dest": "document","sec-fetch-mode": "navigate","sec-fetch-site": "none","sec-fetch-user": "?1","upgrade-insecure-requests": "1","user-agent": us.random  # 使用UserAgent生成的随机User-Agent
}# 发送GET请求获取网页内容
res = requests.get(url=url, headers=headers)# 修改相应内容解码,因为网页编码可能是GBK
html_text = res.content.decode('gbk')# 使用BeautifulSoup解析HTML内容
soup = bs4.BeautifulSoup(html_text, 'html.parser')# 找到包含英雄列表的<ul>标签
ul = soup.find("ul", {"class": "herolist clearfix"})# 找到所有<li>标签,代表每个英雄
lis = ul.find_all('li')# 设置图片保存的目录
save_dir = "imgs"
os.makedirs(save_dir, exist_ok=True)  # 如果目录不存在,则创建它# 遍历每个英雄的<li>标签
for li in lis:# 获取英雄图片的URLsrc = li.a.img.get('src')# 获取英雄的名字name = li.a.img.get('alt')# 补全图片URLsrc_url = "https:" + src# 发送请求下载图片img_res = requests.get(src_url, headers=headers)# 定义图片保存的路径base = os.path.join(save_dir, f"{name}.jpg")# 打开文件并写入图片内容with open(base, "wb") as f:f.write(img_res.content)# 打印下载完成的信息print(f"{name} 皮肤下载完成,保存路径为 {base}")# 等待1秒,防止请求过快time.sleep(1)

http://www.ppmy.cn/devtools/104673.html

相关文章

学习日志8.30--防火墙NAT

目录 一、实验环境配置 二、配置防火墙静态NAT一对一 三、配置防火墙静态NAT多对多 四、配置防火墙NAT端口转换NAPT 五、防火墙smart-nat、easyip 六、防火墙三元组NAT 在学习过基于路由器的NAT网络地址转换&#xff0c;现在学习基于防火墙NAT的网络地址转换&#xff0c;…

虚拟局域网

虚拟局域网 随着以太网规模的扩大&#xff0c;会产生一个巨大的广播域 其弊端是 广播风暴 广播风暴会浪费网络资源和各主机的CPU资源 、、 难以维护和管理 潜在的安全问题 如何分隔广播域 使用路由器&#xff0c;但是由于路由器的成本高&#xff0c;因此不能使用路由器全部…

基于 web教学管理系统设计与实现

3 总体设计 3.1 系统软件体系结构 系统采用B/S结构&#xff0c;统一管理数据库和Web服务器。在这种结构下&#xff0c;用户界面完全通过WWW浏览器实现&#xff0c;一部分事务逻辑在前端实现&#xff0c;但是主要事务逻辑在服务器端实现&#xff0c;形成所谓3-tier结构,第一…

Java框架myBatis(三)

一、特殊符号转义 特殊符号处理 在mybatis中的xml文件中&#xff0c;存在一些特殊的符号&#xff0c;比如&#xff1a;、"、&、<> 等&#xff0c;正常书写mybatis会报错&#xff0c;需要对这些符号进行转义。 具体转义如下所示&#xff1a; 特殊字符 转义字符…

关于几道计算机网络题的解答

2017年12月28日&#xff0c;星期四&#xff0c; 照片上的第一题中多项式的指数看不清&#xff0c;但没关系&#xff0c;就现在的情形&#xff0c;说一下大概的思路&#xff0c;参考着再结合题目中实际的参数&#xff0c;再套一遍就能把题目解出来了&#xff0c; 假设&#xf…

Java算法之堆排序(Heap Sort)

堆排序简介 堆排序是一种基于比较的排序算法&#xff0c;它使用二叉堆数据结构来实现。二叉堆是一种特殊的完全二叉树&#xff0c;其中每个父节点的键值都大于&#xff08;或等于&#xff09;其子节点的键值&#xff08;大顶堆&#xff09;&#xff0c;或者小于&#xff08;或…

Qt: QComboBox

示例1&#xff1a;隐藏某一个下拉选项&#xff0c;并不改变索引序号 //QComboBox::view() 方法返回的是 QListView 类型的指针&#xff0c;表示 QComboBox 中下拉列表的视图部分。 QListView* listView static_cast<QListView*>(ui->combo_box_initial_guess->vi…

从自动驾驶看无人驾驶叉车的技术落地和应用

摘 要 &#xff5c; 介绍无人驾驶叉车在自动驾驶技术中的应用&#xff0c;分析其关键技术&#xff0c;如环境感知、定位、路径规划等&#xff0c;并讨论机器学习算法和强化学习算法的应用以提高无人叉车的运行效率和准确性。无人叉车在封闭结构化环境、机器学习、有效数据集等方…