当前位置: 首页 > news >正文

Python爬虫-爬取B站番剧封面

本文是本人最近学习Python爬虫所做的小练习。如有侵权,请联系删除

页面获取url

在这里插入图片描述

代码


import requests
import os
import re# 创建文件夹
path = os.getcwd() + '/images'
if not os.path.exists(path):os.mkdir(path)# 当前页数
page = 1
# 总页数
total_page = 2# 自动翻页,获取全部数据
def get_data():global page, total_pagewhile page <= total_page:# 地址url = f"https://api.bilibili.com/pgc/season/index/result?st=1&order=3&season_version=-1&spoken_language_type=-1&area=-1&is_finish=-1&copyright=-1&season_status=-1&season_month=-1&year=-1&style_id=-1&sort=0&page={page}&season_type=1&pagesize=20&type=1"# 请求头headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 SLBrowser/9.0.3.1311 SLBChan/105',}# 发送请求response = requests.get(url, headers=headers)# json数据格式items = response.json()# 循环遍历for data in items['data']['list']:# 标题title = data.get('title')# 封面cover = data.get('cover')# 下载图片到images文件夹中,文件名:titleif title != '' and cover != '':download_image(title, cover)total = items.get('data')['total']size = items.get('data')['size']total_page = get_page_count(total, size)page += 1# 下载图片
def download_image(title, cover):# 请求头headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 SLBrowser/9.0.3.1311 SLBChan/105',}res = requests.get(cover, headers=headers)# 判断标题是否含有\/:*?"<>|,文件命名不能含有这些,如果有,则用下划线_取代new_title = validateTitle(title)with open(path + '/' + new_title + '.jpg', mode='wb') as f:# 图片内容写入文件f.write(res.content)print(f"正在下载图片,图片名:{title}.jpg")# 去除文件中的非法字符(正则表达式)
def validateTitle(title):pattern = r"[\\\/\:\*\?\"\<\>\|]"new_title = re.sub(pattern, '_', title)return new_title# 求页数
def get_page_count(total, page):page_count = total // pageif total % page != 0:page_count += 1return page_countif __name__ == '__main__':get_data()

效果

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/308512.html

相关文章:

  • AI时代的产品文案秘籍:如何用AI提升效率
  • 前端架构: 脚手架通用框架封装之入口文件开发(教程一)
  • 吴恩达《机器学习》学习笔记
  • 【FPGA】线性反馈移位寄存器(LFSR)的Verilog实现
  • yolov8涨点技巧,添加SwinTransformer注意力机制,提升目标检测效果
  • k8s初始化错误
  • adb命名大全
  • 计算机发展史 (5)携手共赴难
  • 一键搞定简历设计!电子版简历制作指南3步走!
  • tcpdump 常用用法
  • Opencv实战(5)平滑处理与常见函数
  • 音频PCM介绍与运用
  • 计算机专业大学四年应该如何规划(Java方向)
  • 算法D27|回溯算法4| 93.复原IP地址 78.子集 90.子集II
  • C++实现XOR加解器
  • Kubernetes的Sevice管理
  • C# 高阶语法 —— Winfrom链接SQL数据库的存储过程
  • vue3+vite+ts配置多个代理并解决报404问题
  • 开创未来:探索OpenAI首个AI视频模型Sora的前沿技术与影响
  • Redis---持久化
  • 从 Flask 切到 FastAPI 后,起飞了!
  • 状态码转文字!!!(表格数字转文字)
  • Pytorch 复习总结 4
  • YOLOv9中加入SCConv模块!
  • 代码随想录算法训练营第四十七天丨198. 打家劫舍、​ 213. 打家劫舍 II​、337. 打家劫舍 III
  • 龙蜥Anolis 8.4 anck 安装mysql5.7
  • 【踩坑】修复xrdp无法关闭Authentication Required验证窗口
  • python学习笔记 - 标准库常量
  • 视频和音频使用ffmpeg进行合并和分离(MP4)
  • 02| JVM堆中垃圾回收的大致过程