Python爬虫-爬取三国演义文本数据-bs4
bs4进行数据解析
-数据解析的原理:
- 1.标签定位
-2.提取标签、标签属性中存储的数据值
- bs4数据解析的原理:
- 1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中
-2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取
- 环境安装:
- pip install bs4
- pip install lxml
- 如何实例化BeautifulSoup对象:
- from bs4 import BeautifulSoup
-对象的案例化:
- 1.将本地的html文档中的数据加载到该对象中
fp = open('./test.html','r', encoding='utf-8')
soup = BeautifulSoup(fp, 'lxml')
- 2.将互联网上获取的页面源码加载到该对象中
page_text = response. text
soup = BeatifulSoup(page_text, 'lxml')
- 提供的用于数据解析的方法和属性:
爬取三国演义文本数据
先使用通用爬虫爬取页面所有数据,再解析标题内容
import requests # 导入requests库,用于发起网络请求
from bs4 import BeautifulSoup # 导入BeautifulSoup库,用于解析网页内容# 设置要爬取的网站的URL和请求头信息
url = 'https://www.shicimingju.com/book/sanguoyanyi.html' # 这是我们要爬取的网站地址
headers = {'User-Agent': 'Mozilla/5.0'} # 这是告诉网站我们是用什么浏览器来访问的,这里用的是Mozilla/5.0,类似于Firefox# 使用requests发起网络请求,获取网页内容
page_text = requests.get(url=url, headers=headers).content # 发起请求并获取返回的网页内容# 创建BeautifulSoup对象,用于解析网页内容
soup = BeautifulSoup(page_text, 'html.parser') # 使用html.parser解析网页内容# 使用BeautifulSoup选择器找到包含章节标题和详情页URL的列表项
li_list = soup.select('.book-mulu > ul > li') # 找到所有符合这个规则的列表项# 打开一个文件,准备写入解析到的内容
fp = open('./sanguo.txt', 'w', encoding='utf-8') # 打开一个文件,准备写入解析到的内容# 遍历找到的列表项,解析每个章节的标题和详情页URL
for li in li_list:title = li.a.string # 提取每个列表项中a标签内的文本内容,即章节标题detail_url = 'http://www.shicimingju.com' + li.a['href'] # 构建每个章节的详情页URL# 对每个详情页发起网络请求,获取详情页内容try:detail_page_text = requests.get(url=detail_url, headers=headers).content # 发起请求并获取返回的详情页内容detail_soup = BeautifulSoup(detail_page_text, 'html.parser') # 使用html.parser解析详情页内容div_tag = detail_soup.find('div', class_='chapter_content') # 找到包含章节内容的div标签if div_tag: # 如果找到章节内容div标签content = div_tag.text # 提取章节内容文本fp.write(title + ':' + content + '\n') # 将章节标题和内容写入文件,每行一个print(title, '爬取成功!!!') # 打印章节标题,表示成功爬取else:print(title, '内容解析失败!!!') # 打印章节标题,表示内容解析失败except requests.exceptions.RequestException as e: # 处理可能出现的网络请求异常print(f'请求失败: {e}') # 打印错误信息# 完成所有章节的解析和写入后,关闭文件
fp.close() # 关闭文件
相关文章:
Python爬虫-爬取三国演义文本数据-bs4
bs4进行数据解析 -数据解析的原理: - 1.标签定位 -2.提取标签、标签属性中存储的数据值 - bs4数据解析的原理: - 1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中 -2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取 - 环境安装: - pi…...
html5——列表、表格
目录 列表 无序列表 有序列表 自定义列表 表格 基本结构 示例 表格的跨列 表格的跨行 列表 无序列表 <ul>【声明无序列表】 <li>河间驴肉火烧</li>【声明列表项】 <li>唐山棋子烧饼</li> <li>邯郸豆沫</li> <l…...
【Python字符串攻略】:玩转文字,编织程序的叙事艺术
文章目录 🚀一.字符串基础🌈二.查看数据类型⭐三.转化❤️四.字符串索引🚲五.字符串切片🎬六.字符串切片-步长☔七.反向切片注意事项🚲八.字符串💥查💥改💥删 ❤️九.字符串拼接&…...
element form表单中密码框被自动赋值,并默认背景色为白色,手动输值后背景色才是自己配置的背景色,与表单的自动填充有关
事件背景: 一个表单,有两组需要输入密码的地方,两组都被填充用户名密码,其中一组是其他信息,不是用户名密码,也被填充了,且input背景色是白色,表单中的input已经手动配置为无背景色&…...
【UE5.1 角色练习】15-枪械射击——子弹发射物
目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中(【UE5.1 角色练习】06-角色发射火球-part1)我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”,用于表示…...
Zynq7000系列FPGA中的DMA控制器的编程限制
有关DMAC编程时适用的限制信息,有四个考虑因素: 固定非对齐突发Endian swap size restrictions:在数据传输或处理过程中,不同字节序(Endian)之间的转换和对应的限制在DMA周期内更新通道控制寄存器当MFIFO满…...
超简易高效的 AI绘图工具—与sd-webui一致界面,6G显存最高提升75%出图速率!(附安装包)
大家好,我是灵魂画师向阳 今天给大家分享一个基于Stable Diffusion WebUI 构建的AI绘图工具—sd-webui-forge,该工具的目标在于简化插件开发,优化资源管理,加速推理。 Forge承诺永远不会对Stable Diffusion WebUI用户界面添加不…...
ArduPilot开源代码之OpticalFlow_backend
ArduPilot开源代码之OpticalFlow_backend 1. 源由2. Library设计3. 重要例程3.1 OpticalFlow_backend::_update_frontend3.2 OpticalFlow_backend::_applyYaw 4. 总结5. 参考资料 1. 源由 光流计是一种低成本定位传感器,所有的光流计设备传感驱动代码抽象公共部分统…...
设计模式探索:适配器模式
1. 适配器模式介绍 1.1 适配器模式介绍 适配器模式(adapter pattern)的原始定义是:将一个类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。 适配器模式的主要作用是把原本不兼容的接口,…...
OpenCV 寻找棋盘格角点及绘制
目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点(Checkerboard Corners)是计算机视觉中相机标定(Camera Calibration)过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…...
【深度学习】PyTorch深度学习笔记02-线性模型
1. 监督学习 2. 数据集的划分 3. 平均平方误差MSE 4. 线性模型Linear Model - y x * w 用穷举法确定线性模型的参数 import numpy as np import matplotlib.pyplot as pltx_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0]def forward(x):return x * wdef loss(x, y):y_pred…...
10.FreeRTOS_互斥量
互斥量概述 在博文“ FreeRTOS_信号量 ”中,使用了二进制信号量实现了互斥,保护了串口资源。博文链接如下: FreeRTOS_信号量-CSDN博客 但还是要引入互斥量的概念。互斥量与二进制信号量相比,能够多实现如下两个功能:…...
EtherCAT总线冗余让制造更安全更可靠更智能
冗余定义 什么是总线冗余功能?我们都知道,EtherCAT现场总线具有灵活的拓扑结构,设备间支持线型、星型、树型的连接方式,其中线型结构简单、传输效率高,大多数的现场应用中也是使用这种连接方式,如下图所示…...
Android IdleHandler源码分析
文章目录 Android IdleHandler源码分析概述前提基本用法源码分析添加和删除任务执行任务 应用场景 Android IdleHandler源码分析 概述 IdleHandler是一个接口,它定义在MessageQueue类中,用于在主线程的消息队列空闲时执行一些轻量级的任务。IdleHandle…...
Mac安装stable diffusion 工具
文章目录 1.安装 Homebrew2.安装 stable diffusion webui 的依赖3.下载 stable diffusion webui 代码4.启动 stable diffusion webui 本体5.下载模型6.这里可能会遇到一个clip-vit-large-patch14报错 参考:https://brew.idayer.com/install/stable-diffusion-webui/…...
CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)
一、漏洞名称 OpenSSH 远程代码执行漏洞(CVE-2024-6387) 二、漏洞概述 Open SSH是基于SSH协议的安全网络通信工具,广泛应用于远程服务器管理、加密文件传输、端口转发、远程控制等多个领域。近日被爆出存在一个远程代码执行漏洞,由于Open SSH服务器端…...
python的简单爬取
需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…...
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频)
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频) 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。d…...
【学术会议征稿】第三届智能电网与能源系统国际学术会议
第三届智能电网与能源系统国际学术会议 2024 3rd International Conference on Smart Grid and Energy Systems 第三届智能电网与能源系统国际学术会议(SGES 2024)将于2024年10月25日-27日在郑州召开。 智能电网可以优化能源布局,让现有能源…...
01. 课程简介
1. 课程简介 本课程的核心内容可以分为三个部分,分别是需要理解记忆的计算机底层基础,后端通用组件以及需要不断编码练习的数据结构和算法。 计算机底层基础可以包含计算机网络、操作系统、编译原理、计算机组成原理,后两者在面试中出现的频…...
在多模型聚合调用中,Taotoken的路由与容灾机制对服务可用性的提升感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多模型聚合调用中,Taotoken的路由与容灾机制对服务可用性的提升感受 在构建依赖大模型能力的应用时,服务…...
博弈编码:用激励相容机制实现抗女巫攻击的去中心化机器学习
1. 项目概述:当编码遇见博弈论在分布式计算和存储领域,编码理论(Coding Theory)一直扮演着“守护神”的角色。无论是经典的纠删码(Erasure Code)还是更复杂的再生码(Regenerating Codeÿ…...
Golang JWT生产实践:时间精度、密钥轮换与Refresh Token安全设计
1. 这不是“加个Token就完事”的简单活儿 Golang领域JWT——这六个字背后,藏着太多人踩过坑、重写过三遍、上线后半夜被报警电话叫醒的真实故事。我第一次在生产环境用JWT做身份验证时,自信满满地照着某篇教程写了20行代码,结果上线第三天&am…...
OpenMemories-Tweak:嵌入式系统配置管理的逆向工程实践
OpenMemories-Tweak:嵌入式系统配置管理的逆向工程实践 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak 问题导向:破解封闭式嵌入式系统的配置限制 在…...
课题框架设计:认知流形的拓扑缺陷与精神病理学映射(世毫九实验室原创课题)
课题框架设计:认知流形的拓扑缺陷与精神病理学映射(世毫九实验室原创课题) 作者:方见华 单位:世毫九实验室 摘要与核心观点 本课题基于世毫九实验室原创认知几何学框架及GLZ认知拓扑互补理论支撑,核心假设为…...
英雄联盟终极自动化工具:5分钟快速上手League Akari完整指南
英雄联盟终极自动化工具:5分钟快速上手League Akari完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为繁琐的游戏操作…...
Applite:3步告别命令行,让Mac应用管理变得如此简单
Applite:3步告别命令行,让Mac应用管理变得如此简单 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 你是否曾因安装一个应用而被迫打开终端,…...
Midscene.js 实战(二):通过 YAML 脚本实现 AI 驱动的自动化断言
前言:为什么你需要关注 YAML 脚本与 AI 断言? 2025年12月,字节跳动 Web Infra 团队正式发布了 Midscene v1.0。根据官方发布公告,Midscene 自 2024 年开源以来,已经在 GitHub 斩获 11k star、Trending 榜第二名等成绩,并在互联网、金融、政企、汽车等大量应用场景下完成…...
Arduino入门教程十三|自制模拟传感器(分压原理详解+光敏夜灯+constrain范围限制)
我整理了一套Arduino 零基础 从入门到高级 完整系统课程,包含视频讲解、全套源码、接线图纸、库文件、ESP32/ESP32-S3 摄像头 & 物联网实战项目,循序渐进,新手也能零基础吃透。需要系统学习可以查看我主页专属课程(零基础保姆级Arduino教程从入门到实战_在线视频教程-C…...
别再只改源文件了!Linux内核编译时‘multiple definition’错误的隐藏Boss:备份文件覆盖机制
别再只改源文件了!Linux内核编译时‘multiple definition’错误的隐藏Boss:备份文件覆盖机制当你深夜调试Linux内核代码,反复修改dtc-parser.tab.c文件却始终遭遇相同的multiple definition错误时,是否怀疑过自己的修改被某种神秘…...
