Python爬虫实战:手把手教你用 Python 爬取网易新闻每日热文,小白也能轻松上手

Python爬虫实战:手把手教你用 Python 爬取网易新闻每日热文,小白也能轻松上手

在这里插入图片描述

Python爬虫实战:手把手教你用 Python 爬取网易新闻每日热文,小白也能轻松上手

Python爬虫实战:手把手教你用 Python 爬取网易新闻每日热文,小白也能轻松上手,该教程详细讲解如何用 Python 爬取网易新闻每日热文,先介绍爬虫 “请求 - 解析 - 提取 - 保存” 原理及 requests、BeautifulSoup4 等必备库的安装,再逐段解析完整代码:从设置请求头模拟浏览器、发送 HTTP 请求获取网页数据,到通过关键词匹配和类名匹配双方案提取 “今日推荐” 热文,还包含数据去重、Excel 保存(按日期命名)及异常处理与调试模块。同时给出实操步骤,解答爬取不到数据、Excel 保存失败等常见问题,强调爬虫伦理与法律规范,最后提供定时爬取、多频道爬取等功能扩展建议,帮助小白轻松上手打造自动新闻采集工具。
在这里插入图片描述

前言

    Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。

在这里插入图片描述

在这里插入图片描述

🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。

🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。

🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。

🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。

🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。


Python爬虫实战:手把手教你用 Python 爬取网易新闻每日热文,小白也能轻松上手

在信息爆炸的时代,手动筛选每日热门新闻耗时又低效。本文将带你使用Python打造一个网易新闻热文爬虫,自动抓取、整理并保存每日热门新闻,全程代码解析+实操步骤,即使是编程新手也能轻松掌握。

爬取网址:https://news.163.com/domestic/

爬取内容:

在这里插入图片描述

一、爬虫原理与工具准备

在开始编写代码前,我们先了解下爬虫的基本逻辑和所需工具,为后续开发打下基础。

1.1 爬虫核心原理

爬虫本质是模拟浏览器向目标网站发送请求,获取网页HTML数据后,从中提取有用信息(如新闻标题、链接),最后将信息整理并保存。整个过程可概括为“请求-解析-提取-保存”四步。

1.2 必备工具与安装

本次爬虫开发需要用到4个核心Python库,各库功能及安装命令如下:

库名称核心功能安装命令
requests发送HTTP请求,获取网页数据pip install requests
BeautifulSoup4解析HTML文档,提取目标信息pip install beautifulsoup4
pandas数据结构化处理,方便保存为Excelpip install pandas
openpyxl支持pandas将数据写入Excel文件pip install openpyxl

安装完成后,可在命令行输入pip list检查是否安装成功。

二、完整代码解析:从请求到保存全流程

下面我们逐段解析代码,理解每一步的作用和原理,让你不仅会用,还能明白为什么这么用。

2.1 导入所需库

首先导入爬虫过程中需要的所有库,每个库的作用已在注释中说明:

# 发送HTTP请求,获取网页数据import requests # 解析HTML文档,提取目标信息from bs4 import BeautifulSoup # 数据结构化处理,生成DataFrame便于保存import pandas as pd # 控制程序等待时间,避免请求过于频繁import time # 处理文件路径、判断文件是否存在等操作import os # 获取当前日期,用于生成带日期的文件名from datetime import datetime # 正则表达式,用于匹配包含特定关键词的元素(如“今日推荐”“HOT”)import re 

2.2 定义爬虫主函数 crawl_163_news()

这是整个爬虫的核心函数,包含了“请求网页-解析数据-提取信息-去重-保存”的完整逻辑,我们分模块解析。

在这里插入图片描述
模块1:设置请求头,模拟浏览器访问

为什么需要请求头?因为很多网站会识别请求来源,如果发现是爬虫程序(而非正常浏览器),会拒绝提供数据。所以我们需要设置headers模拟浏览器访问:

defcrawl_163_news():# 设置请求头,模拟Chrome浏览器访问 headers ={# User-Agent:告诉网站“我是Chrome浏览器”,核心防反爬字段'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',# 告诉网站可接受的内容格式'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',# 告诉网站可接受的语言(中文)'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',# 告诉网站可接受的压缩格式,减少数据传输量'Accept-Encoding':'gzip, deflate',# 保持连接,提升请求效率'Connection':'keep-alive',# 告诉网站需要升级到HTTPS(如果支持)'Upgrade-Insecure-Requests':'1',}# 目标爬取网址:网易新闻国内频道 url ='https://news.163.com/domestic/'

小技巧:你的浏览器User-Agent可以通过“F12→Network→任意请求→Headers→Request Headers”找到,替换代码中的User-Agent可进一步提升模拟真实性。

模块2:发送HTTP请求,获取网页数据

使用requests.get()发送请求,同时加入异常处理,避免因网络问题导致程序崩溃:

try:print("正在获取网易新闻页面...")# 发送GET请求,超时时间设为15秒(避免程序一直等待) response = requests.get(url, headers=headers, timeout=15)# 检查请求是否成功:若状态码不是200(正常),则抛出异常 response.raise_for_status()# 设置编码为UTF-8,避免中文乱码 response.encoding ='utf-8'# 使用BeautifulSoup解析HTML,指定解析器为html.parser(Python内置,无需额外安装) soup = BeautifulSoup(response.text,'html.parser')
模块3:提取“今日推荐”热文(双方案保障)

为了避免因网站页面结构变化导致爬取不到数据,我们设计了两种提取方案,确保稳定性。

方案1:通过关键词匹配“今日推荐/HOT”板块
先找到包含“今日推荐”“HOT”“热门推荐”关键词的标题元素,再获取其相邻的新闻链接:

# 存储提取的热门新闻 hot_recommendations =[]# 查找包含“今日推荐”“HOT”“热门推荐”的h2/h3/div标签 hot_titles = soup.find_all(['h2','h3','div'], string=re.compile(r'今日推荐|HOT|热门推荐'))for title_element in hot_titles:# 获取关键词标签的父级div容器(通常新闻列表在父容器中) container = title_element.find_parent('div')if container:# 在父容器中找到所有带链接的a标签 links = container.find_all('a', href=True)for link in links:# 提取新闻标题(去除前后空格) title = link.get_text().strip()# 提取新闻链接 href = link['href']# 过滤条件:标题非空、链接非空、标题长度>5(避免无关短链接)if title and href andlen(title)>5:# 确保是网易新闻的有效链接if href.startswith('http')and('news.163.com'in href or'www.163.com'in href): hot_recommendations.append({'标题': title,'链接': href })

方案2:通过类名匹配新闻列表(方案1失效时启用)
如果方案1没找到数据,说明“今日推荐”板块结构可能变了,此时通过类名匹配常见的新闻列表(如类名含“list”“news”“cm”):

# 如果方案1未获取到数据,执行方案2ifnot hot_recommendations:# 查找类名包含list/cm/news的ul标签(新闻列表常用ul包裹)for ul in soup.find_all('ul', class_=lambda x: x and('list'in x or'cm'in x or'news'in x)):# 提取ul中的所有新闻链接for item in ul.find_all('a', href=True): title = item.get_text().strip() href = item['href']# 同样应用过滤条件if title and href andlen(title)>5:if href.startswith('http')and('news.163.com'in href or'www.163.com'in href): hot_recommendations.append({'标题': title,'链接': href })
模块4:数据去重(避免重复新闻)

由于网页中可能存在重复链接(如同一新闻在多个板块出现),需要通过“链接”字段去重:

# 用集合存储已见过的链接(集合特性:元素不重复) seen =set() unique_recommendations =[]for item in hot_recommendations:# 如果链接未见过,加入去重后的列表if item['链接']notin seen: seen.add(item['链接']) unique_recommendations.append(item)
模块5:保存数据到Excel(带日期命名)

将去重后的新闻数据保存为Excel文件,文件名包含当前日期,方便后续查找:

if unique_recommendations:# 获取当前日期,格式为“年月日”(如20250905) current_date = datetime.now().strftime("%Y%m%d")# 生成文件名:网易新闻_20250905.xlsx excel_filename =f"网易新闻_{current_date}.xlsx"# 将列表转换为DataFrame(pandas的表格数据格式) df = pd.DataFrame(unique_recommendations)# 保存为Excel,不保留索引列,使用openpyxl引擎 df.to_excel(excel_filename, index=False, engine='openpyxl')# 打印爬取结果信息print(f"成功爬取 {len(unique_recommendations)} 条今日推荐内容")# 打印文件绝对路径(方便找到文件)print(f"结果已保存到: {os.path.abspath(excel_filename)}")# 打印前5条新闻,快速预览print("\n前5条推荐内容:")for i, item inenumerate(unique_recommendations[:5],1):print(f"{i}. {item['标题']}")
模块6:异常处理与调试(程序稳定性保障)

如果爬取不到数据或出现错误,程序会打印错误信息,并保存网页结构到本地供调试:

else:print("未找到今日推荐内容,可能需要更新选择器")# 生成带时间戳的调试文件名(如debug_page_20250905_143000.html) debug_filename =f"debug_page_{datetime.now().strftime('%Y%m%d_%H%M%S')}.html"# 保存网页完整HTML到本地withopen(debug_filename,'w', encoding='utf-8')as f: f.write(soup.prettify())print(f"已保存页面结构到 {debug_filename} 供分析")# 捕获网络请求相关错误(如超时、404、500)except requests.RequestException as e:print(f"网络请求错误: {e}")# 捕获其他所有未知错误except Exception as e:print(f"发生错误: {e}")

2.3 程序入口:执行爬虫

最后通过if __name__ == "__main__":确保只有直接运行脚本时才执行爬虫:

if __name__ =="__main__":print("开始爬取网易新闻今日推荐...")# 调用爬虫主函数 crawl_163_news()print("程序执行完毕!")

三、实操步骤:运行爬虫并查看结果

代码编写完成后,按照以下步骤运行,轻松获取每日热文:

完整代码:

""" 爬取网易新闻,每日热文 """import requests from bs4 import BeautifulSoup import pandas as pd import time import os from datetime import datetime import re defcrawl_163_news():# 设置请求头,模拟浏览器访问 headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding':'gzip, deflate','Connection':'keep-alive','Upgrade-Insecure-Requests':'1',} url ='https://news.163.com/domestic/'try:# 发送HTTP请求print("正在获取网易新闻页面...") response = requests.get(url, headers=headers, timeout=15) response.raise_for_status()# 检查请求是否成功# 设置正确的编码 response.encoding ='utf-8'# 使用BeautifulSoup解析HTML soup = BeautifulSoup(response.text,'html.parser')# 查找今日推荐HOT部分 hot_recommendations =[]# 方法1: 查找包含"今日推荐"或"HOT"标题的部分 hot_titles = soup.find_all(['h2','h3','div'], string=re.compile(r'今日推荐|HOT|热门推荐'))for title_element in hot_titles:# 找到相邻的ul列表或包含链接的容器 container = title_element.find_parent('div')if container:# 在容器中查找所有链接 links = container.find_all('a', href=True)for link in links: title = link.get_text().strip() href = link['href']if title and href andlen(title)>5:# 过滤掉过短的标题(可能是无关链接)# 确保链接是有效的新闻链接if href.startswith('http')and('news.163.com'in href or'www.163.com'in href): hot_recommendations.append({'标题': title,'链接': href })# 方法2: 如果上述方法找不到,尝试通过类名查找ifnot hot_recommendations:for ul in soup.find_all('ul', class_=lambda x: x and('list'in x or'cm'in x or'news'in x)):for item in ul.find_all('a', href=True): title = item.get_text().strip() href = item['href']if title and href andlen(title)>5:if href.startswith('http')and('news.163.com'in href or'www.163.com'in href): hot_recommendations.append({'标题': title,'链接': href })# 去重 seen =set() unique_recommendations =[]for item in hot_recommendations:if item['链接']notin seen: seen.add(item['链接']) unique_recommendations.append(item)# 保存结果到Excel文件if unique_recommendations:# 生成文件名:网易新闻+日期 current_date = datetime.now().strftime("%Y%m%d") excel_filename =f"网易新闻_{current_date}.xlsx"# 创建DataFrame df = pd.DataFrame(unique_recommendations)# 保存到Excel df.to_excel(excel_filename, index=False, engine='openpyxl')print(f"成功爬取 {len(unique_recommendations)} 条今日推荐内容")print(f"结果已保存到: {os.path.abspath(excel_filename)}")# 打印前几条结果print("\n前5条推荐内容:")for i, item inenumerate(unique_recommendations[:5],1):print(f"{i}. {item['标题']}")else:print("未找到今日推荐内容,可能需要更新选择器")# 打印页面结构以便调试 debug_filename =f"debug_page_{datetime.now().strftime('%Y%m%d_%H%M%S')}.html"withopen(debug_filename,'w', encoding='utf-8')as f: f.write(soup.prettify())print(f"已保存页面结构到 {debug_filename} 供分析")except requests.RequestException as e:print(f"网络请求错误: {e}")except Exception as e:print(f"发生错误: {e}")if __name__ =="__main__":print("开始爬取网易新闻今日推荐...") crawl_163_news()print("程序执行完毕!")

3.1 运行前检查

  1. 确保已安装所有必备库(参考第二节1.2);
  2. 确认网络正常,能访问https://news.163.com/domestic/
  3. 脚本文件保存为crawl_163_news.py(任意名称均可,后缀为.py)。

3.2 运行爬虫

  1. 打开命令行,切换到脚本所在文件夹(如cd D:\PythonProjects);
  2. 输入命令python crawl_163_news.py,按下回车;
  3. 等待程序执行,控制台会打印爬取进度(如“正在获取网易新闻页面…”“成功爬取20条今日推荐内容”)。

3.3 查看结果

  1. 爬取成功后,在脚本所在文件夹会生成一个Excel文件(如网易新闻_20250905.xlsx);
  2. 双击打开Excel,即可看到“标题”和“链接”两列数据,点击链接可直接跳转到新闻页面。
在这里插入图片描述

四、常见问题与解决方案

在使用过程中,可能会遇到一些问题,这里整理了高频问题及解决方法:

4.1 问题1:爬取不到数据,提示“未找到今日推荐内容”

原因:网易新闻页面结构更新,导致原有的关键词或类名匹配失效。
解决方案

  1. 找到程序生成的debug_page_xxxx.html文件,用浏览器打开;
  2. 按“F12”打开开发者工具,使用“元素选择器”(左上角箭头图标)点击页面中的“今日推荐”板块;
  3. 查看该板块的HTML结构,更新代码中的关键词(如re.compile(r'新关键词'))或类名(如class_=lambda x: x and ('新类名' in x))。

4.2 问题2:Excel保存失败,提示“No module named ‘openpyxl’”

原因:未安装openpyxl库,pandas需要该库支持Excel写入。
解决方案:命令行输入pip install openpyxl,安装完成后重新运行脚本。

4.3 问题3:网络请求错误,提示“Connection timed out”

原因:网络不稳定,或请求频率过高被网站暂时屏蔽。
解决方案

  1. 检查网络连接,确保能正常访问网易新闻;
  2. requests.get()前加入time.sleep(3)(等待3秒),降低请求频率,代码如下:
time.sleep(3)# 加入这行,放在response = requests.get(...)前面 response = requests.get(url, headers=headers, timeout=15)

五、爬虫伦理与法律提示

在使用爬虫时,必须遵守网站规则和法律法规,避免侵权或违规:

  1. 查看robots协议:了解网站允许爬取的范围(网易新闻允许爬取公开新闻内容);
  2. 控制爬取频率:不要频繁发送请求,建议加入time.sleep(2-5),避免给网站服务器造成压力;
  3. 仅用于个人学习:爬取的数据不可用于商业用途,如需公开使用,需获得网站授权;
  4. 尊重版权:新闻内容的版权归网易所有,请勿随意转载或篡改。

六、功能扩展建议

如果你想进一步提升爬虫的实用性,可以尝试以下扩展功能:

  1. 定时爬取:使用schedule库设置每日固定时间自动爬取(如每天早上8点);
  2. 多频道爬取:除了“国内新闻”,增加“国际新闻”“财经新闻”等频道的爬取(修改url为对应频道地址);
  3. 提取新闻正文:在获取新闻链接后,进一步请求链接页面,提取新闻正文、发布时间、作者等信息;
  4. 邮件推送:爬取完成后,通过smtplib库将新闻列表发送到个人邮箱,实现“每日新闻早报”。

通过本文的教程,你已经掌握了网易新闻热文爬虫的开发方法。爬虫的核心在于“理解网页结构+灵活处理异常”,后续可以尝试爬取其他网站(如新浪新闻、腾讯新闻),不断积累经验,打造更强大的数据采集工具。如果在实践中遇到问题,欢迎在评论区交流讨论!

附录:扩展学习资源

  1. 官方资源
  2. 本专栏特色资源
    • 代码资源仓库:ZEEKLOG专属资源在线获取
    • 海量Python教程:关注公众号:xcLeigh,获取网盘地址
    • 一对一答疑:添加微信与博主在线沟通(备注“Python专栏”
  3. 相关书籍推荐:
书名说明
在这里插入图片描述成功的Python包应该安装简便、运行稳定,并能持续可靠地更新。发布一个完美的Python包需要遵循严谨的流程体系,包括系统化测试和代码审查,以及完善的文档体系。值得庆幸的是,Python生态提供了丰富的工具和技术,可实现从项目初始化到版本发布的全流程自动化。
本书深度解析了以自动化和可扩展的方式共享Python 代码的实用流程。通过实际操作,读者可轻松掌握最新打包工具的运用技巧,深入了解包测试和持续集成的方方面面,甚至可获得创建可持续开源项目的专业技巧,包括许可协议、文档编写及培育贡献者社区等关键维度。🥇 点击购买
在这里插入图片描述本书涵盖的主题十分广泛,首先介绍贝叶斯推理及其与深度学习的关系。然后探索各种主流的贝叶斯深度学习方法,展示如何在Python和Tensorflow中实现这些方法。本书文笔优美,通俗易懂,即使是不熟悉贝叶斯统计或深度学习的读者也能阅读学习。我特别喜欢第5章。该章很好地解释了PBP和BBB,列举了在Python和Tensorflow中实现和扩展这些方法的示例。强烈建议有兴趣学习BDL的人士阅读本书。我相信,任何读过本书的人都能更深入地理解贝叶斯深度学习。🥇 点击购买

联系博主

    xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在ZEEKLOG、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于ZEEKLOG平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.ZEEKLOG.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

Read more

【Hadoop】核心组件深度剖析:HDFS、YARN与MapReduce的奥秘

【Hadoop】核心组件深度剖析:HDFS、YARN与MapReduce的奥秘

🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Hadoop简介 2、Hadoop生态系统概览 二、Hadoop Distributed File System (HDFS) 深度解析 1、HDFS核心概念 2、HDFS工作机制 3、HDFS的优势与局限 三、Yet Another Resource Negotiator (YARN) 架构剖析 1、YARN诞生背景与意义 2、YARN架构概览 3、YARN工作流程 4、YARN应用场景 四、MapReduce编程模型与实现机制 1、MapReduce基本概念 2、MapReduce 工作流程 一、

By Ne0inhk
【初阶数据结构08】——树的基本概念与堆的基本功能实现

【初阶数据结构08】——树的基本概念与堆的基本功能实现

文章目录 前言 一、树的概念 1.1 树的定义 1.2 树的相关术语 1.3 树的表示 1.4 树在实际中的应用 二、二叉树概念及结构 2.1 二叉树的定义 2.2 现实中的二叉树 2.3 特殊的二叉树 2.4 二叉树的性质 2.5 二叉树的存储结构 1. 顺序存储 2. 链式存储 三、堆的概念与结构 3.1 堆的定义 3.2 堆的存储结构 四、堆的基本功能实现 4.1 辅助函数:

By Ne0inhk
【优选算法】双指针算法:专题二

【优选算法】双指针算法:专题二

目录 【611.有效三角形个数】 1、题目描述 2、实现核心及思路 解题步骤: 思路可视化: 代码实现: 【179.查找总价格为目标值的两个商品】 1、题目描述: 2、实现核心及思路: 代码实现: 【15.三数之和】 1、题目描述: 2、实现核心及思路: 解题步骤: 思路可视化: 代码实现: 【18.四数之和】 1、题目描述: 编辑2、实现核心即思路: 解题步骤: 代码实现: 【611.有效三角形个数】 1、题目描述 2、实现核心及思路 构成三角形的条件:设三角形三边长分别为a(最长边),b(最短边),c。 则有 a + b >

By Ne0inhk
力扣校招算法通关:双指针技巧全场景拆解 —— 从数组操作到环检测的高效解题范式

力扣校招算法通关:双指针技巧全场景拆解 —— 从数组操作到环检测的高效解题范式

文章目录 * 前言 * 双指针 * 例题讲解 * 移动零 力扣 * 复写零 力扣 * 快乐数 力扣 * 盛最多水的容器 力扣 * 有效三角形的个数 力扣 * 查找总价格为目标值的两个商品 力扣 * 三数之和 力扣 前言 在力扣校招算法题中,双指针技巧是一类高频且实用的解题方法。它并非真正的 “指针”,而是通过两个数组下标(或迭代器)的协同移动,在数组划分、区间求解、环检测等场景中实现高效遍历与逻辑处理,往往能将时间复杂度从暴力法的 O(n平方)优化至O(n),是校招笔试和面试中突破数组类难题的关键武器。 本专栏将围绕力扣校招高频的双指针题型展开,从 “移动零”“复写零” 的数组操作,到 “快乐数” 的环检测、“盛最多水的容器” 的区间优化,再到 “三数之和” 的多指针协同,逐一拆解双指针的核心逻辑、边界处理与去重技巧,

By Ne0inhk