如何从yaml取值,如何处理编码,使用BeautifulSoup解析网页获取数据

import requests
from bs4 import BeautifulSoup
import yaml
import chardet
#从doctor.yaml里面引入网址
with open('doctor.yaml', 'r', encoding='utf-8') as file:urls_data = yaml.safe_load(file)
#把查出的数据写入doctor_info.txt中
with open('doctor_info.txt', 'w', encoding='utf-8') as output_file:#从yaml中取出'https://1.hml,"标题1"'for url_data in urls_data.get('urls', []):#把数据中第一个值https://1.hml,付给了URLurl = url_data.split(',')[0].strip()#把数据中第二个值标题1,付给了department   department = url_data.split(',')[1].strip()#把department的值写入结果文件中output_file.write(f"\n{department}\n")# 获取 URLresponse = requests.get(url)# 在这段代码中,首先使用 `chardet.detect(response.content)` 来检测网页内容的编码格式,并将其储存在 `detected_encoding` 中。然后,通过循环遍历 `possible_encodings` 中的不同编码格式,尝试用每一种编码格式来解码网页内容。如果成功解码(没有引发 `UnicodeDecodeError`),则将解码后的内容存储在 `html_content` 中,并通过 `break` 跳出循环。否则,继续尝试下一种编码格式。如果所有尝试都失败,即 `html_content` 仍为 `None`,则输出"无法解码网页内容"并继续下一个 URL 的处理。#detected_encoding = chardet.detect(response.content)['encoding']possible_encodings = ['utf-8', 'gbk', 'gb2312', 'big5']html_content = Nonefor encoding in possible_encodings:try:html_content = response.content.decode(encoding)breakexcept UnicodeDecodeError:passif html_content is None:print("无法解码网页内容")continue
#`BeautifulSoup`库中的 `html.parser` 解析器是Python的内置解析器,用于解析HTML文档soup = BeautifulSoup(html_content, 'html.parser')# 查找 <div class="z-new-doctor mt15"> 元素z_new_doctor = soup.find('div', class_='z-new-doctor mt15')if z_new_doctor:# 查找 所有<div class="schedule-list clearfix pt15 pb20 pl10 pr10 bdr-botd graydeep"> 元素schedule_lists = z_new_doctor.find_all('div', class_='schedule-list clearfix pt15 pb20 pl10 pr10 bdr-botd graydeep')#每个<div class="schedule-list clearfix pt15 pb20 pl10 pr10 bdr-botd graydeep"> 元素做同样的处理for schedule_list in schedule_lists:# 1.查找所有 <div class="fl ml10 lh24"> 元素fl_elements = schedule_list.find_all('div', class_='fl ml10 lh24')#取<div class="fl ml10 lh24"> 元素下前两个值for fl_element in fl_elements:doctor_info = fl_element.get_text().split()[:2]  # 获取两个文字值,第一个为医生姓名,第二个为医生职称if len(doctor_info) == 2:doctor_name, doctor_title = doctor_info#写入结果文件output_file.write(f"医生姓名: {doctor_name}\n")output_file.write(f"医生职称: {doctor_title}\n")# 2.查找所有 <div class="sd-doc-done sd-doc-done-w fl pl15 lh24 tc"> 元素sd_done_elements = schedule_list.find_all('div', class_='sd-doc-done sd-doc-done-w fl pl15 lh24 tc')for sd_done_element in sd_done_elements:#取到的医生擅长写入结果文件output_file.write(f"擅长: {sd_done_element.get_text()}\n") # 3.查找img下的src,把值写入结果,如果值是'//z.xywy.com/doc/images_new/doctor_c.jpg'替换成空img_tag = schedule_list.find('img')if img_tag and 'src' in img_tag.attrs:img_src = img_tag['src']# 将提取到的 src 中的内容进行替换new_src = img_src.replace('//z.xywy.com/doc/images_new/doctor_c.jpg', ' ')output_file.write(f"头像地址: {new_src}\n")  # 输出替换后的 src 属性值else:print(f"未找到 {z_new_doctor} 元素")

doctor.yaml

urls:- 'https://1.tml,"标题1"'- 'https://2.htm,"标题2"'

结果:
标题1
医生姓名1
职称1
擅长1
头像1

 医生姓名2职称2擅长2头像2

标题2
医生姓名3
职称3
擅长3
头像3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像锐化——非锐化掩膜USM和锐化掩膜SM(附代码)

非锐化掩膜 (USM) 和锐化掩膜 (SM) 都是常用的图像锐化技术。它们都可以通过增强图像的边缘信息来提高图像的清晰度。 目录 一、非锐化掩膜USM1.1 USM原理1.2 USM实现步骤1.3 优点1.4 代码 二、锐化掩膜SM2.1 SM原理2.2 SM实现步骤2.3 优点2.4 代码 三、锐化效果四、总结4.1 效…

Jupyter集成AI环境搭建@miniconda@FreeBSD

首先安装jupyter pip install jupyter启动jupyter notebook jupyter notebook然后会自动打开网页&#xff1a;http://localhost:8888/tree 开始干活&#xff01; 启动jupyter lab jupyter lab自动打开网页&#xff1a;http://localhost:8888/lab 开工&#xff0c;干活&am…

Qt三方库:QuaZIP介绍、编译和使用

前言 Qt使用一些压缩解压功能&#xff0c;探讨过libzip库&#xff0c;zlib库&#xff0c;libzip库比较原始&#xff0c;还有其他库&#xff0c;都比较基础&#xff0c;而在基础库之上&#xff0c;又有高级封装库&#xff0c;Qt中的QuaZIP是一个很好的选择。Quazip是一个用于压缩…

5.11学习记录

20长安杯部分 检材 1 的操作系统版本 CentOS Linux 7.6.1810 (Core) 检材 1 中&#xff0c;操作系统的内核版本是 3.10.0-957.el7.x86_64 检材 1 中磁盘包含一个 LVM 逻辑卷&#xff0c;该 LVM 开始的逻辑区块地址&#xff08;LBA&#xff09;是 2099200 物理卷&#xff…

20240510每日后端---聊聊文件预览,doc,image,ppt转PDF预览

一、引入依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>crac…

(Mac)RocketMQ的本地安装测试(详细图示)

目录 部署服务 namesrv / broker下载解压缩运行 namesrvnohup ./bin/mqnamesrv & 启动命令详解运行 broker 测试收发消息运行自带的生产者测试类运行自带的消费者测试类 部署 Dashboard 可视化下载打包运行访问 部署服务 namesrv / broker 下载解压缩 官网下载 https://r…

mac苹果电脑卡顿反应慢如何解决?2024最新免费方法教程

苹果电脑以其稳定的性能、出色的设计和高效的操作系统&#xff0c;赢得了广大用户的喜爱。然而&#xff0c;随着时间的推移&#xff0c;一些用户会发现自己的苹果电脑开始出现卡顿、反应慢等问题。这不仅影响使用体验&#xff0c;还会影响工作效率。那么&#xff0c;面对这些问…

FPGA -手写异步FIFO

一&#xff0c;FIFO原理 FIFO&#xff08;First In First Out&#xff09;是一种先进先出的数据缓存器&#xff0c;没有外部读写地址线&#xff0c;使用起来非常简单&#xff0c;只能顺序写入数据&#xff0c;顺序的读出数据&#xff0c;其数据地址由内部读写指针自动加1完成&a…

指针(4)有点难

指针&#xff08;4&#xff09; 来做个简单的回顾&#xff1a; 指针数组&#xff1a; 1.是数组 2.是存放指针的数组 char* arr1[5]; int*arr2[3]; 数组指针&#xff1a; 1 .是指针 2 .指向数组的指针 字符指针&#xff1a;char*pc; 整型指针&#xff1a;int*pi; int …

win10无法被远程桌面连接,Win10系统无法被远程桌面连接的原因有哪些

win10无法被远程桌面连接&#xff0c;Win10系统无法被远程桌面连接的原因有哪些&#xff1f; 先&#xff0c;我们需要明确Win10系统无法被远程桌面连接的可能原因。其中&#xff0c;最常见的原因包括&#xff1a;远程桌面功能未启用、网络连接问题、防火墙或安全软件设置不当、…

哪个牌子的电视盒子好用?小编分享最新电视盒子排名

最近电视盒子是大家热议的话题&#xff0c;就目前来看它的地位依然无可替代&#xff0c;但许多朋友硬不知道哪个牌子的电视盒子好用&#xff0c;面对众多品牌和产品究竟要如何选择才是最好的呢&#xff1f;本期小编要分享最新发布的电视盒子排名&#xff0c;看看哪些电视盒子最…

C++ 抽象与封装

一 抽象 抽象实例&#xff1a;时钟 数据抽象&#xff1a; 具有表面当前时间的时、分、秒 行为抽象&#xff1a; 具有设置时间和显示时间两个最基本的功能。 抽象实例&#xff1a;人 数据抽象&#xff1a;姓名、年龄、性别等。 行为抽象&#xff1a; 生物属性&#xff1a;吃…

【线性代数】英语版听课笔记

线性代数 - 北京航天航空大学&#xff08;英文版&#xff09;_哔哩哔哩_bilibili 39.concept of vector space in this lecture we will studyvector space&#xff0c; the concept of basis dimension and coordinates 向量空间的维数&#xff1a;向量空间的基底所含向量的…

TCP超时重传机制

一、TCP超时重传机制简介 TCP超时重传机制是指当发送端发送数据后&#xff0c;如果在一定时间内未收到接收端的确认应答&#xff0c;则会认为数据丢失或损坏&#xff0c;从而触发重传机制。发送端会重新发送数据&#xff0c;并等待确认应答。如果在多次重传后仍未收到确认应答&…

车载测试__公司面试题(整理)

案例1&#xff1a; 镁佳 外包岚图汽车 车载测试 区域经理视频面试 1.首先自我介绍一下 2.项目是怎么测的举例说明 3.你是怎么看待加班的 4.你是怎么看待驻场单位 5.是否可以接受外派去做一段时间的技术支持&#xff0c;比如去襄阳&#xff0c;最长一个月。 6.多快能到…

Codigger:优化Vim编辑器的关键是可视化

Vim是一款高度灵活的文本编辑器&#xff0c;以其高效的快捷键和命令行界面而闻名。然而&#xff0c;对于一些初学者来说&#xff0c;Vim的复杂性和强大的功能可能会让他们感到困惑。为了使Vim更易于使用&#xff0c;Codigger引入可视化操作的概念&#xff0c;将原本抽象的、难以…

初步了解json文件

来自wetab 的AI pro: JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式&#xff0c;但是它使用了类似于编程语言&#xff08;特别是J…

智慧公厕,运用数据提升公共厕所管理水平!

随着城市人口的增加和生活水平的提高&#xff0c;公共厕所的管理变得越来越重要。传统的厕所管理方式已经无法满足人们对卫生、便利和舒适的需求。而智慧公厕作为新一代公厕管理方式&#xff0c;通过运用数据技术和大数据分析手段&#xff0c;彻底改变了公厕管理的模式&#xf…

Maximo 在 Automation Script 中访问数据库

在 Automation Script 中我们通常使用 mbo 对象来操作数据&#xff0c;但有时候当数据量较大时&#xff0c;使用 mbo 对象来操作数据会比较慢。这时候&#xff0c;我们可以使用 JDBC 的方式来直接访问数据库&#xff0c;从而提高操作数据的效率。 下面看看使用 JavaScript 脚本…

2024OD机试卷-执行任务赚积分 (java\python\c++)

题目:执行任务赚积分 题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问在有限的时间内,可…