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

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情

电视猫上面有《庆余年》分集剧情,如何批量爬取下来呢?

先找到每集的链接地址,都在这个class="epipage clear"的div标签里面的li标签下面的a标签里面:

<a href="/drama/Yy0wHDA=/episode">1</a>

这个链接是相对地址,前面加上https://www.tvmao.com,才是完整的URL地址;

每集的标题在p标签里面:

<p class="epi_t">

第7集:范闲赴诗会作绝句惊艳京城

</p>

在kimi中输入提示词:

你是一个Python编程专家,要完成以下任务的Python脚本的编写:

打开网页:https://www.tvmao.com/drama/Yy0wHDA=/episode

在源代码中定位class="epipage clear"的div标签;

提取div标签里面所有a标签的href值,前面加上”https://www.tvmao.com”,构成网页下载URL;

解析URL,定位class="epi_t"的p标签,提取其文本内容,作为txt文档文件名;提取class="clear epi_c"的article标签里面的文本内容,保存为txt文档到D盘下的qyn文件夹;

注意:

每下载一个网页,随机暂停1-10秒;

网页文件名要进行处理,去除不符合window系统文件命名规范的特殊字符,处理文件名时要确保文件名中不包含任何特殊字符或不可见字符,可以通过使用strip()方法来去除字符串两端的空白字符,包括换行符和空格;

每一步都要输出信息到屏幕

要有应对反爬虫的措施,设置请求头;

生成的源代码如下:

import requests

from bs4 import BeautifulSoup

import random

import time

import os

# 目标网页URL

url = 'https://www.tvmao.com/drama/Yy0wHDA=/episode'

# 设置请求头,模拟浏览器访问

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

}

# 发送HTTP请求

response = requests.get(url, headers=headers)

response.raise_for_status() # 如果请求失败,将抛出异常

# 解析HTML

soup = BeautifulSoup(response.text, 'html.parser')

# 定位class="epipage clear"的div标签

div_epipage = soup.find('div', class_='epipage clear')

# 提取所有a标签的href值,并构成完整的网页下载URL

episode_links = []

for a_tag in div_epipage.find_all('a', href=True):

episode_url = 'https://www.tvmao.com' + a_tag['href']

episode_links.append(episode_url)

# 创建文件夹

d盘_qyn文件夹路径 = 'D:\\qyn'

if not os.path.exists(d盘_qyn文件夹路径):

os.makedirs(d盘_qyn文件夹路径)

# 下载并保存每个剧集的文本内容

for episode_url in episode_links:

print(f'正在下载:{episode_url}')

# 发送HTTP请求

episode_response = requests.get(episode_url, headers=headers)

episode_response.raise_for_status()

# 解析HTML

episode_soup = BeautifulSoup(episode_response.text, 'html.parser')

# 解析文件名

epi_t = episode_soup.find('p', class_='epi_t')

file_name = epi_t.text.strip().replace(':', '').replace('/', '-').replace('\\', '-').replace('|', '-') # 处理文件名

# 解析文本内容

epi_c = episode_soup.find('article', class_='clear epi_c')

text_content = epi_c.get_text(strip=True)

# 保存到txt文档

file_path = os.path.join(d盘_qyn文件夹路径, file_name + '.txt')

with open(file_path, 'w', encoding='utf-8') as file:

file.write(text_content)

print(f'已保存:{file_path}')

# 随机暂停1-10秒

time.sleep(random.randint(1, 10))

print('所有剧集文本已下载完毕。')

相关文章:

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情

电视猫上面有《庆余年》分集剧情&#xff0c;如何批量爬取下来呢&#xff1f; 先找到每集的链接地址&#xff0c;都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面&#xff1a; <a href"/drama/Yy0wHDA/episode">1</a> 这个…...

md5强弱碰撞

一&#xff0c;类型。 1.弱比较 php中的""和""在进行比较时&#xff0c;数字和字符串比较或者涉及到数字内容的字符串&#xff0c;则字符串会被转换为数值并且比较按照数值来进行。按照此理&#xff0c;我们可以上传md5编码后是0e的字符串&#xff0c;在…...

【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.”解决方法

【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.” 一、Docker环境介绍2.1 本次环境介绍2.2 本次实践介绍二、故障现象2.1 运行容器消失2.2 重新运行容器报错三、故障分析四、故障处理4.1 停止 Docker 服务:4.2 备份重要数据4.3 清理冲突…...

小红书-社区搜索部 (NLP、CV算法实习生) 一面面经

😄 整个流程按如下问题展开,用时60min左右面试官人挺好,前半部分问问题,后半部分coding一道题。 各位有什么问题可以直接评论区留言,24小时内必回信息,放心~ 文章目录 1、自我介绍2、介绍下项目:微信-多模态小视频分类2.1、看你用了cross-att来融合多模态信息,cross…...

解读makefile中的.PHONY

在 Makefile 中&#xff0c;.PHONY 是一个特殊的目标&#xff0c;用于声明伪目标&#xff08;phony target&#xff09;。伪目标是指并不代表实际构建结果的目标&#xff0c;而是用来触发特定动作或命令的标识。通常情况下&#xff0c;.PHONY 会被用来声明一组需要执行的动作&a…...

linux配置防火墙端口

配置防火墙&#xff0c;添加或删除端口&#xff0c;需要有root权限。 防火墙常用命令如下&#xff1a; 1.查看防火墙状态&#xff1a; systemctl status firewalld active(running)&#xff1a;开启状态&#xff0c;正在运行中 inactive(dead)&#xff1a;关闭状态&#xff…...

sklearn线性回归--岭回归

sklearn线性回归--岭回归 岭回归也是一种用于回归的线性模型&#xff0c;因此它的预测公式与普通最小二乘法相同。但在岭回归中&#xff0c;对系数&#xff08;w&#xff09;的选择不仅要在训练数据上得到好的预测结果&#xff0c;而且还要拟合附加约束&#xff0c;使系数尽量小…...

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据

官网demo地址&#xff1a; Draw Features 先初始化地图&#xff0c;准备一个空的矢量图层&#xff0c;用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…...

医疗科技:UWB模块为智能医疗设备带来的变革

随着医疗科技的不断发展和人们健康意识的提高&#xff0c;智能医疗设备的应用越来越广泛。超宽带&#xff08;UWB&#xff09;技术作为一种新兴的定位技术&#xff0c;正在引领着智能医疗设备的变革。UWB模块作为UWB技术的核心组成部分&#xff0c;在智能医疗设备中发挥着越来越…...

Java面试题大全(从基础到框架,中间件,持续更新~~~)

从Java基础到数据库&#xff0c;Spring&#xff0c;MyBatis&#xff0c;消息中间件&#xff0c;微服务解决全部Java面试过程中的问题。&#xff08;持续更新~~&#xff09; Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…...

零知识证明在隐私保护和身份验证中的应用

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 隐私保护和身份验证是现代社会中的关键问题&#xff0c;尤其是在数字化时代。零知识证明&#xff08;Zero-Knowledge Proofs&…...

15.微信小程序之async-validator 基本使用

async-validator是一个基于 JavaScript 的表单验证库&#xff0c;支持异步验证规则和自定义验证规则 主流的 UI 组件库 Ant-design 和 Element中的表单验证都是基于 async-validator 使用 async-validator 可以方便地构建表单验证逻辑&#xff0c;使得错误提示信息更加友好和…...

元宇宙vr科普馆场景制作引领行业潮流

在这个数字化高速发展的时代&#xff0c;北京3D元宇宙场景在线制作以其独特的优势&#xff0c;成为了行业内的创新引领者。它能够快速完成空间设计&#xff0c;根据您的个性化需求&#xff0c;轻松设置布局、灯光、音效以及互动元素等&#xff0c;为您打造出一个更加真实、丰富…...

kotlin基础之高阶函数

Kotlin中的高阶函数、内联函数以及noinline和crossinline关键字是函数式编程中的重要概念。下面我将逐一解释这些概念的定义、实现原理、使用场景以及noinline和crossinline关键字的具体用法。 高阶函数 定义&#xff1a;高阶函数是接受一个或多个函数作为参数&#xff0c;或…...

【Python音视频技术】用moviepy实现图文成片功能

今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感&#xff0c;趁着下班写一篇。这里用到 python的moviepy库&#xff0c; 之前文章介绍过。 大体思路&#xff1a;假定有4张图片&#xff0c;每张图片将在视频中展示2秒钟&#xff0c;并且图片会按照…...

【Linux】权限的理解之权限掩码(umask)

目录 前言 一、利用八进制数值表示文件或目录的权限属性 二、系统默认的权限掩码和权限掩码的作用原理 三、分析权限掩码改变文件或目录的权限属性 前言 权限掩码是由4个数字组合而成的&#xff0c;默认的第一位数字是0&#xff1b;后三位数字分别由八进制位数字组成。权限…...

UVa1466/LA4849 String Phone

UVa1466/LA4849 String Phone 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的G题 题意 平面网格上有n&#xff08;n≤3000&#xff09;个单元格&#xff0c;各代表一个重要的建筑物。为了保证建筑物的安全&#xff0c;警察署给每个建筑物派了一名警察…...

使用Word表格数据快速创建图表

实例需求&#xff1a;Word的表格如下所示&#xff0c;标题行有合并单元格。 现在需要根据上述表格数据&#xff0c;在Word中创建如下柱图。如果数据在Excel之中&#xff0c;那么创建这个图并不复杂&#xff0c;但是Word中就没用那么简单了&#xff0c;虽然Word中可以插入图表&a…...

JAVA面试题大全(十三)

1、Mybatis 中 #{}和 ${}的区别是什么&#xff1f; 在 MyBatis 中&#xff0c;#{} 和 ${} 是两种用于参数绑定的方式&#xff0c;它们之间的主要区别在于数据处理的方式和 SQL 注入的风险。 #{}&#xff1a;预编译处理 #{} 用于预编译处理&#xff0c;MyBatis 会为其生成 Prep…...

搜维尔科技:第九届元宇宙数字人设计大赛入围作品名单

随着第九届元宇宙数字人设计大赛渐近尾声&#xff0c;各院校提交的数字人作品已陆续完成评分统计汇总工作&#xff01;现将入围名单公布&#xff0c;请入围团队尽可能到场参加大赛颁奖典礼&#xff0c;具体获奖名次将在颁奖典礼中现场公布&#xff01; 颁奖典礼时间、地点&…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点&#xff1a; 共 6 个字段&#xff1a; Year&#xff08;年&#xff09;Month&#xff08;月&#xff09;Day&#xff08;日&#xff09;Hour&#xff08;小时&#xff09;Minute&#xff08;分钟&#xff09;Second&#xff08;秒&#xff09; 表示…...