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

news/2024/7/7 21:34:40

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

先找到每集的链接地址,都在这个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('所有剧集文本已下载完毕。')


http://lihuaxi.xjx100.cn/news/2162984.html

相关文章

【无标题】 前端基础入门三大核心之HTML篇:HTML页面性能优化实战指南 —— 5大方法与策略

【无标题】 前端基础入门三大核心之HTML篇&#xff1a;HTML页面性能优化实战指南 —— 5大方法与策略 1. 减少HTML文件大小基本概念实操技巧代码示例 2. 利用Link预加载与prefetch基本概念实操技巧 3. 异步加载脚本与defer属性基本概念实操技巧 4. 图像懒加载与图片优化基本概念…

python安装路径可以更改吗

Python3.5默认安装路径是当前用户的 AppData\.. 下 现在安装过程中默认是install just for me&#xff0c;这个会把python默认安装到AppData文件夹中&#xff0c;如果选了install for all users&#xff0c;就会默认安装到C盘根目录了。 python3.5 安装&#xff1a; 输入官网…

Flutter 中的 InputDecorator 小部件:全面指南

Flutter 中的 InputDecorator 小部件&#xff1a;全面指南 在Flutter中&#xff0c;InputDecorator是一个用于装饰输入字段的组件&#xff0c;它为TextField和TextFormField提供了一个统一的外观和布局。InputDecorator可以让您自定义输入框的标签、填充、边框、图标、光标、错…

大模型日报2024-05-23

大模型日报 2024-05-23 大模型资讯 减少生成型AI和大型语言模型中的幻觉现象 摘要: Phocuswright即将发布全面报告《从流行词到实际效益&#xff1a;跟上旅游业中生成型AI的步伐》。该报告预览指出&#xff0c;降低生成型人工智能及大型语言模型在生成内容时出现的幻觉现象是行…

6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…

C#保存CSV的逗号表达式,其中逗号是中文格式还是英文格式?

在C#中保存CSV文件时&#xff0c;用来分隔字段的逗号应该是英文逗号&#xff08;,&#xff09;&#xff0c;而不是中文逗号&#xff08;&#xff0c;&#xff09;。CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff09;是一种通用的、简单的文件格式&…

vue3插槽solt 使用

背景增加组件的复用性&#xff0c;个人体验组件化还是react 方便。 Vue插槽solt如何传递具名插槽的数据给子组件&#xff1f; 一、solt 原理 知其然知其所以然 Vue的插槽&#xff08;slots&#xff09;是一种分发内容的机制&#xff0c;允许你在组件模板中定义可插入的内容…

三菱【PLC】

【X】输入 X000~X043 // 1bit 【Y】输出 Y000~Y027 // 1bit 【M】辅助继电器 M000~M383 一般用 // 1bit M384~M511 EEPROM保持 M512~M1535 电容保持 // 电容满电10天 M8000~M8255 特殊用 …