首页 > 编程语言 >热搜不再错过:用Python打造你的微博热搜追踪器

热搜不再错过:用Python打造你的微博热搜追踪器

时间:2024-06-21 08:58:54浏览次数:24  
标签:title Python page 发送 url 微博热 email 邮件 追踪

简介

在当今信息爆炸的时代,获取最新、最热门的信息成为了许多人的日常需求。微博热搜榜作为反映社会热点和公众关注焦点的重要窗口,其信息价值不言而喻。本文将介绍一个实用的Python爬虫程序,它能够自动爬取微博热搜榜的信息,并通过邮件的形式将这些信息发送给用户,帮助用户及时了解社会动态,把握热点趋势。

总体介绍

本博客文章将详细介绍一个关于微博热搜榜简单爬虫程序。该程序的主要功能是自动获取微博热搜榜上的信息,并将这些信息通过邮件发送给用户。程序使用了以下模块:

  • requests:用于发送HTTP请求,获取网页内容。
  • BeautifulSoup:用于解析HTML网页,方便提取所需信息。
  • smtplib:用于发送邮件。
  • email.utilsemail.mime.text:用于构建邮件的各个部分。

程序中定义了三个主要函数:

  • page_request(url, header):发送HTTP请求,获取网页内容,并返回HTML代码。
  • page_parse(html):解析HTML代码,提取热搜信息,并调用email_set()函数发送邮件。
  • email_set(data):构建邮件的各个部分,并发送邮件。

此外,程序还包含一个job()函数,它负责调用page_request()page_parse()函数,实现整个爬取和邮件发送的流程。

完整代码:


# 爬虫相关模块
import requests
from bs4 import BeautifulSoup

import smtplib
import email.utils
from email.mime.text import MIMEText

import time

# 请求网页
def page_request(url, header):
    response = requests.get(url=url, headers=header)
    html = response.content.decode("UTF-8")
    return html

# 解析网页
def page_parse(html):
    soup = BeautifulSoup(html, 'html.parser')
    news = []
    # 处理热搜前50
    urls_title = soup.select('#pl_top_realtimehot > table > tbody > tr > td.td-02 > a')
    hotness = soup.select('#pl_top_realtimehot > table > tbody > tr > td.td-02 > span')
    for i in range(len(urls_title)):
        new = {}
        title = urls_title[i].get_text()
        url = urls_title[i].get('href')
        # 个别链接会出现异常
        if url == 'javascript:void(0);':
            url = urls_title[i].get('href_to')
        # 热搜top没有显示热度
        if i == 0:
            hot = 'top'
        else:
            hot = hotness[i - 1].get_text()

        new['title'] = title
        new['url'] = "https://s.weibo.com" + url
        new['hot'] = hot
        news.append(new)
    print(len(news))
    for element in news:
        print("新闻: "+element['title'] + '\t热度: ' + element['hot'] + '\t网址: ' + element['url'])
    # 发送邮件
    email_set(news)

def email_set(data):
    text =""
    no=1
    for element in data:
        text+=str(no)+" 新闻: "+element['title'] + '\n热度: ' + element['hot'] + '\n网址: ' + element['url']+"\n\n"
        no+=1
    subject = '微博热搜榜'+str(time.time())
    message = MIMEText(text)
    message['To'] = email.utils.formataddr(('02', ''))
    message['From'] = email.utils.formataddr(('01', ''))
    message['Subject'] = subject
    server = smtplib.SMTP_SSL('smtp.qq.com', 465)
    server.login('', 'yrbqcwfhlcvucjcj')
    server.set_debuglevel(True)
    try:
        server.sendmail('', [''], msg=message.as_string())
        print("发送成功\n\n")
    except:
        print("发送失败")
    finally:
        server.quit()


def job():
    print('开始爬取微博热搜')
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
        'Accept-Encoding': 'gzip, deflate, br',
        'Cookie': ""
    }
    url = 'https://s.weibo.com/top/summary'
    html = page_request(url=url, header=header)
    page_parse(html)


if __name__ == "__main__":
    while True:
        job()
        time.sleep(20)

函数解析

page_parse 函数

page_parse()函数负责解析网页,提取微博热搜数据。它使用BeautifulSoup处理HTML,筛选出新闻标题、链接和热度,并将这些信息存储在列表中。之后,该函数打印出每条新闻的详细信息,并调用email_set()函数发送邮件。

email_set 函数

email_set()函数用于创建并发送邮件。它接收一个包含热搜数据的列表,构建邮件正文,设置邮件头部信息(如发件人、收件人、主题),并通过SMTP服务器发送邮件。

job 函数

job()函数作为程序的入口点,负责启动爬虫流程。它首先打印开始爬取的提示,然后获取目标网页内容,解析出热搜数据,并触发邮件发送过程。

特别注意

重要提醒: 本代码示例完成于2022年,随着微博平台的产品迭代和反爬策略的更新,原有的爬虫代码可能已经无法正常运行。因此,本代码仅供学习和参考之用,不保证其在当前环境下的功能性。

学习目的

尽管代码可能已不再适用,但它提供了一个很好的学习机会,让您了解如何使用Python进行网页爬取、数据解析和邮件发送。以下是代码的关键学习点:

  1. HTTP请求:如何使用requests库发送HTTP请求,获取网页内容。
  2. HTML解析:利用BeautifulSoup库解析HTML文档,提取所需数据。
  3. 邮件发送:通过smtplibemail.mime.text构建和发送邮件。
  4. 函数封装:学习如何将功能模块化,通过函数实现代码的重用和组织。

更新建议

如果您希望更新代码以适应当前的微博平台,可能需要考虑以下方面:

  • 检查微博API:研究是否有可用的微博API接口,使用API获取数据通常比直接爬取更为稳定和合法。
  • 更新选择器:由于网页结构可能发生变化,需要更新BeautifulSoup的选择器以匹配新的HTML元素。
  • 反爬策略:了解并应对微博可能采取的反爬虫措施,如设置合适的请求头、使用代理等。
  • 邮件服务器配置:根据您使用的邮件服务提供商,可能需要更新SMTP服务器的配置信息。

标签:title,Python,page,发送,url,微博热,email,邮件,追踪
From: https://blog.csdn.net/kilig_CSM/article/details/139848394

相关文章

  • 文科生脑回路也学得会|Python自学笔记0620
    python安装(windows版)Python官网:WelcometoPython.org(本地机查看)设置-系统-关于-设备规格-系统类型【举例说明】WIN10系统进入各种安装版本 PythonReleasesforWindows|Python.org版本选择界定标准:电脑是64位操作系统,优先选64(win10选这个没影响,windows7以前的用......
  • HCIA17 Python自动化基础 之telnet lib 库
    1.实验介绍及拓扑公司交换机,管理IP地址为192.168.0.101/24。现编写自动化脚本,查看设备当前配置文件。2.掌握内容及配置思路2.1掌握内容Python基本语法telnetlib基本方法2.2配置思路1.   完成设备Telnet预配置(配置Telnet密码,开启Telnet功能和允许Telne......
  • 【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏
    文章目录......
  • 2024华为OD机试真题- 计算三叉搜索树的高度-(C++/Java/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述定义构造三叉搜索树规则如下:每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是:1.如果数小于节点的数减去500,则将数插入节点的左子树2.如果数大于节点的......
  • python GUI:tkinter 信息管理系统——不会长胖的斜杠(浔川python推广部)
    总览前言主要实现登录注册修改运行登录注册登录成功主界面添加查询查询成功保存信息信息管理系统v1.1登录界面获取账号密码主界面查询查询成功显示信息信息管理系统v2.0登录主界面增加查询删除显示代码获取前言本系统主要通过tkinter模块实现,通过读取对应的文件,实现登......
  • python工具系列(亲测有效):在pycharm中复制粘贴时出现ENSP如何处理
    在pycharm中复制粘贴时出现ENSP如何处理在pycharm中复制粘贴时出现ENSP如何处理在pycharm中复制粘贴时出现ENSP如何处理安装nexchatgpt插件之后,生成的代码,如果直接粘贴到pycharm.py文件中,会出现ENSP图样,如下图所示:粘贴到jupyternotebook虽然看不出来,也是不能......
  • 新手小白包会(python) | OpenCV进阶教程,带你踏入计算机视觉领域
    目录一、OpenCV简介1.应用场景2.学习与使用二、OpenCV安装 1.安装2.验证三、OpenCV使用1.边缘检测1)sobel算子(cv2.Sobel()) 2)Scharr算子(cv.Scharr()) 3)laplacian(cv2.Laplacian())4)canny算法(cv.Canny())2.下采样(cv2.pyrDown())3.上采样(cv2.pyrUp())4.拉普拉斯金字塔......
  • 基于python-深度学习的混凝土马路和泥地马路识别-含数据集+pyqt界面
    代码下载:https://download.csdn.net/download/qq_34904125/89434765本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-pyto......
  • 基于python-CNN卷积神经网络的鱼类识别-含数据集+pyqt界面
    代码下载地址:https://download.csdn.net/download/qq_34904125/89434763本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-......
  • 如何用Pyinstaller将python脚本打包成exe文件?
    首先用打开cmd命令管理器下载pyinstallerpipinstallpyinstaller国内镜像源pipinstall-ihttps://pypi.douban.com/simple/pyinstaller#豆瓣源pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepyinstaller#清华源本来我的文件夹只有一个py文件 需要我......