当前位置: 首页 > article >正文

爬虫开发(5)如何写一个CSDN热门榜爬虫小程序

笔者 綦枫Maple 的其他作品,欢迎点击查阅哦~:
📚Jmeter性能测试大全:Jmeter性能测试大全系列教程!持续更新中!
📚UI自动化测试系列: Selenium+Java自动化测试系列教程❤
📚移动端自动化测试系列:Appium自动化测试系列教程

如何写一个CSDN热门榜爬虫小程序

📚引言

在互联网时代,信息的获取已经变得越来越便捷。然而,面对海量的信息,如何高效地筛选出有价值的内容,成为了一个崭新的小挑战。为此,许多网站提供了“热门”或“推荐”功能,帮助用户快速找到最受欢迎的内容。而CSDN(China Software Developer Network)作为国内知名的开发者社区,里面的热门文章榜单是许多技术爱好者关注的重点。本文中,博主将详细介绍如何编写一个简单的CSDN热门榜爬虫小程序,帮助大家自动化地获取这些热门文章的信息。

声明:本文仅作为技术分享,请勿对任何网站进行攻击,切勿用作非法用途。

📚准备工作

🀚安装必要的Python库

在开始编写爬虫之前,我们需要确保安装了这两个重要的Python库:requestsBeautifulSoup

  • requests:用于发送HTTP请求,获取网页内容。
  • BeautifulSoup:用于解析HTML文档,提取所需数据。

你可以使用以下命令通过pip安装这两个库:

bash深色版本

pip install requests beautifulsoup4

🀚创建项目文件

在你的工作目录下,创建一个新的Python文件,例如 csdn_hotlist_spider.py,并在其中编写爬虫代码。

✍编写爬虫代码

✍导入所需的模块

首先,我们需要导入 requestsBeautifulSoup 模块,以及其他可能用到的标准库模块:

import requests
from bs4 import BeautifulSoup

✍定义函数 get_csdn_hotlist

接下来,我们定义一个函数 get_csdn_hotlist,则个函数将负责获取CSDN热门文章的信息

def get_csdn_hotlist():
    # CSDN热门文章页面URL
    url = 'https://www.csdn.net/nav/ai'
    
    # 设置请求头,模拟浏览器访问
    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'
    }
    
    # 发送GET请求
    response = requests.get(url, headers=headers)
    
    # 解析HTML
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 找到热门文章列表
    hot_articles = soup.find_all('li', class_='news-list-item')
    
    # 遍历热门文章列表,提取所需信息
    articles = []
    for article in hot_articles:
        title = article.find('h2').text.strip()
        link = article.find('a')['href']
        summary = article.find('p', class_='summary').text.strip()
        
        # 将信息添加到列表
        articles.append({
            'title': title,
            'link': link,
            'summary': summary
        })
    
    return articles
✍详细解析
  1. ✍定义URL

    url = 'https://www.csdn.net/nav/ai'
    
    • 这里我们指定了CSDN热门文章页面的URL。nav/ai 是CSDN的一个子页面,这里会专门展示AI相关的热门文章。
  2. ✍设置请求头

    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'
    }
    
    • User-Agent 是一个HTTP头字段,用于告诉服务器我们使用的浏览器类型。通过设置这个字段,我们可以模拟浏览器的行为,避免被服务器识别为爬虫而被拒绝访问。
  3. ✍发送GET请求

    response = requests.get(url, headers=headers)
    
    • 使用 requests.get 方法发送GET请求,获取指定URL的网页内容。headers 参数传递了我们之前设置的请求头。
  4. ✍解析HTML

    soup = BeautifulSoup(response.text, 'html.parser')
    
    • 使用 BeautifulSoup 解析返回的HTML内容。response.text 是服务器返回的HTML文本,'html.parser' 是解析器类型。
  5. ✍找到热门文章列表

    hot_articles = soup.find_all('li', class_='news-list-item')
    
    • 使用 soup.find_all 方法查找所有符合条件的HTML元素。这里我们查找所有类名为 news-list-item<li> 元素,这些元素通常包含热门文章的信息。
  6. ✍遍历热门文章列表,提取所需信息

    articles = []
    for article in hot_articles:
        title = article.find('h2').text.strip()
        link = article.find('a')['href']
        summary = article.find('p', class_='summary').text.strip()
        
        # 将信息添加到列表
        articles.append({
            'title': title,
            'link': link,
            'summary': summary
        })
    
    • 遍历每个热门文章元素,提取文章的标题、链接和简介。
    • title:使用 article.find('h2').text.strip() 提取文章标题,并去除首尾空格。
    • link:使用 article.find('a')['href'] 提取文章链接。
    • summary:使用 article.find('p', class_='summary').text.strip() 提取文章简介,并去除首尾空格。
    • 将提取的信息以字典形式存储,并添加到 articles 列表中。
  7. ✍返回文章列表

    return articles
    
    • 最后,返回一下包含所有热门文章信息的列表。

✍主程序入口

在脚本的最后,我们定义主程序入口,调用 get_csdn_hotlist 函数并打印结果。

if __name__ == '__main__':
    # 获取热门文章列表
    hotlist = get_csdn_hotlist()
    
    # 打印热门文章信息
    for index, article in enumerate(hotlist, start=1):
        print(f"{index}. {article['title']}")
        print(f"   链接: {article['link']}")
        print(f"   简介: {article['summary']}\n")
✍详细解析
  1. 🀙主程序入口

    if __name__ == '__main__':
    
    • 这是一个常见的Python编程模式,用于判断当前脚本是否直接运行。如果是直接运行,则执行下面的代码块。
  2. 🀙获取热门文章列表

    hotlist = get_csdn_hotlist()
    
    • 调用 get_csdn_hotlist 函数,获取热门文章列表。
  3. 🀙打印热门文章信息

    for index, article in enumerate(hotlist, start=1):
        print(f"{index}. {article['title']}")
        print(f"   链接: {article['link']}")
        print(f"   简介: {article['summary']}\n")
    
    • 使用 enumerate 函数遍历热门文章列表,同时获取每个文章的索引。
    • 打印每篇文章的序号、标题、链接和简介。

🀙运行程序

将上述代码保存为 csdn_hotlist_spider.py 文件,然后在命令行中运行它:

bash深色版本

python csdn_hotlist_spider.py

程序将会输出CSDN热门文章的标题、链接和简介。

🀙注意事项

🀙遵守网站规则

在爬取任何网站的数据时,请确保阅读并遵守该网站的服务条款,避免因违规操作导致法律问题或账号封禁。CSDN的使用条款通常会明确指出哪些行为是允许的,哪些是禁止的。

🀙请求频率

频繁地向同一网站发送请求可能会导致IP被封禁。建议合理设置请求间隔时间,例如每分钟请求一次,或者使用代理IP池来分散请求。

🀙错误处理

实际应用中应增加异常处理逻辑,比如网络请求失败时的重试机制等。可以使用 try-except 块来捕获和处理异常:

try:
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # 如果响应状态码不是200,抛出HTTPError异常
except requests.RequestException as e:
    print(f"请求失败: {e}")

✍结尾

🀙🀚🀛🀜🀝🀞🀟🀠🀡🀐🀑🀒🀓🀔🀕🀖🀘🀗🀏🀎🀍🀌🀋🀊🀉🀈🀇🀆🀅🀃🀂🀁🀀🀄︎🀢🀣🀥🀤🀦🀧🀨🀩🀪

📘 妹妹听后点了点头,脸上露出了满意的笑容。她轻声说道:“原来如此,谢谢你,鸽鸽。看来我不仅要多读书,还要多动手实践,提升自己才行。”

看着她那充满求知欲的眼神,我不禁感叹,学习之路虽然充满挑战,但有这样一位美丽聪慧的伙伴相伴,一切都变得格外有意义。快去和妹妹一起实践一下吧!

求赞图


👨‍🎓作者:綦枫Maple
🚀博客:CSDN、掘金等
🚀网易云:https://y.music.163.com/m/user?id=316706413
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系处理。
🀐其他:若有兴趣,可以加页面左侧的《Java自动化技术交流屋》探讨学习哦~

http://www.kler.cn/a/414690.html

相关文章:

  • web安全之信息收集
  • 查询当天每个时间点上进退场人数思路
  • 非关系型数据库有哪些特点?
  • 什么是串联谐振
  • 借助nntools的模型训练(图像去噪任务, PyTorch)
  • vue3实现自定义导航菜单
  • 学习日志 --A5rZ
  • git:下载与安装
  • HTTPS的安全性优势
  • Pytorch中反向传播
  • C++初阶(十六)--STL--list的模拟实现
  • QT QFormLayout控件 全面详解
  • C++中的volatile关键字
  • torch.set_printoptions
  • 房屋出租出售预约系统支持微信小程序+H5+APP
  • 【含开题报告+文档+PPT+源码】基于SpringBoot的艺术培训学校管理系统的设计与实现
  • vue2 中使用 Ag-grid-enterprise 企业版
  • 解决数据传送问题:内网http传输
  • LeetCode 力扣 热题 100道(十)回文链表(C++)
  • 【青牛科技】D1671 75Ω 带4级低通滤波的单通道视频放大电 路芯片介绍
  • 【论文阅读】三平面相关与变体
  • oracle 12c查看执行过的sql及当前正在执行的sql
  • 爬虫cookie反爬------加速乐(jsl)
  • 第三十三章 UDP 客户端 服务器通信 - IPv4 和 IPv6
  • 【软考速通笔记】系统架构设计师⑦——系统架构设计基础知识
  • 亚马逊开发视频人工智能模型,The Information 报道