fromhtml.parser import HTMLParserclassLinkExtractor(HTMLParser):"""一个自定义的HTML解析器,用于提取所有链接"""def__init__(self):# 初始化父类,convert_charrefs=True 是默认且推荐的设置super().__init__(convert_charrefs=True)self.links=[]# 用于存储提取到的链接defhandle_starttag(self,tag,attrs):"""重写开始标签处理方法"""# 我们只关心 <a> 标签iftag=='a':# attrs 是一个包含 (属性名, 属性值) 元组的列表forattr_name,attr_valueinattrs:ifattr_name=='href':# 找到 href 属性,将其添加到列表中self.links.append(attr_value)print(f"找到一个链接: {attr_value}")defhandle_data(self,data):"""重写文本处理方法,这里仅仅是演示,可以对文本做进一步处理"""# 对于提取链接这个任务,我们实际上不需要处理文本pass# 1. 准备一段待解析的HTML代码片段sample_html="""<divclass="container"><h1>我的收藏夹</h1><p>欢迎来到我的<ahref="https://example.com">示例网站</a>。</p><ul><li><ahref="https://python.org">Python官网</a></li><li><ahref="/about">关于我们</a></li><li><a>这是一个无效的链接,没有href属性</a></li></ul><imgsrc="logo.png"alt="Logo"></div>"""# 2. 创建解析器实例parser=LinkExtractor()# 3. 将HTML数据喂给解析器# 注意 feed 方法可以分多次调用,对于流式数据非常有用parser.feed(sample_html)# 4. 解析完成后,可以获取结果print("\n所有提取到的链接:")forlinkinparser.links:print(link)################ 结 果 ##########################找到一个链接:https://example.com 找到一个链接:https://python.org 找到一个链接:/about 所有提取到的链接: https://example.comhttps://python.org/aboutflask 》》内置HTMLParser
张小明
前端开发工程师
5分钟掌握APK-Installer:Windows上安装Android应用的终极指南
5分钟掌握APK-Installer:Windows上安装Android应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行你喜爱的Android应…
从零搭建一个完整的Java项目CI/CD流水线:Jenkins Pipeline + Docker + Maven保姆级配置
从零搭建Java项目CI/CD流水线:Jenkins Pipeline实战指南 在当今快节奏的软件开发环境中,自动化构建和部署已成为团队提升交付效率的关键。对于Java开发者而言,如何将代码变更快速、可靠地转化为生产环境中的服务,是每个项目必须面…
E7Helper:第七史诗自动化助手完整使用指南
E7Helper:第七史诗自动化助手完整使用指南 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支持📺,…
UABEAvalonia:跨平台Unity资源编辑器终极指南,轻松编辑游戏资产
UABEAvalonia:跨平台Unity资源编辑器终极指南,轻松编辑游戏资产 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEAvalonia是一款强大的跨平台Unity资源编辑器,专…
Qtui文件界面模块化设计以及开发qss样式表文件
Qt开发ui文件界面模块化设计 一、Qt界面模块化设计 Qt界面模块化就是使用一个.ui文件等于一个类(界面类)的思路,然后在主界面直接调用这个界面类,说白了就是主界面包含N个界面类,这就是面向对象的最基本用法:类的实例化与组合。 二、一个ui文件自动生成…
开源语音识别OASR部署指南:从Whisper模型到私有化音频处理
1. 项目概述:当语音识别遇上开源,OASR如何重塑音频处理体验最近在折腾一个需要处理大量会议录音和访谈音频的项目,传统的商业语音识别服务要么太贵,要么对中文支持不够友好,要么就是数据隐私问题让人头疼。就在我四处寻…