python趣味挑战之爬取天气与微博热搜并自动发给微信好友

本攻略将介绍如何使用Python爬取天气和微博热搜数据,并将数据发送给微信好友。我们将使用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML页面,以及使用itchat库来实现微信自动登录和消息发送功能。

实现Python爬取天气和微博热搜数据

以下是一个示例代码,用于实现Python爬取天气和微博热搜数据:

import requests
from bs4 import BeautifulSoup
import itchat

# 发送HTTP请求
weather_url = 'http://www.weather.com.cn/weather/101010100.shtml'
weibo_url = 'https://s.weibo.com/top/summary?cate=realtimehot'
weather_response = requests.get(weather_url)
weibo_response = requests.get(weibo_url)

# 解析HTML页面
weather_soup = BeautifulSoup(weather_response.text, 'html.parser')
weibo_soup = BeautifulSoup(weibo_response.text, 'html.parser')
weather_div = weather_soup.find('div', {'id': '7d'})
weibo_table = weibo_soup.find('table')

# 处理数据
weather_data = []
for li in weather_div.find('ul').find_all('li'):
    date = li.find('h1').text
    weather = li.find_all('p')
    temperature = weather[0].text.strip()
    weather_type = weather[1].text.strip()
    wind = weather[2].text.strip()
    weather_data.append([date, temperature, weather_type, wind])

weibo_data = []
for tr in weibo_table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    rank = tds[0].text.strip()
    title = tds[1].text.strip()
    hot = tds[2].text.strip()
    weibo_data.append([rank, title, hot])

# 发送数据到微信好友
def send_message():
    # 登录微信
    itchat.auto_login(hotReload=True)
    # 发送天气数据
    weather_message = '今日天气:\n'
    for data in weather_data:
        weather_message += '日期:{},温度:{},天气:{},风力:{}\n'.format(data[0], data[1], data[2], data[3])
    itchat.send(weather_message, toUserName='filehelper')
    # 发送微博热搜数据
    weibo_message = '微博热搜:\n'
    for data in weibo_data:
        weibo_message += '排名:{},标题:{},热度:{}\n'.format(data[0], data[1], data[2])
    itchat.send(weibo_message, toUserName='filehelper')
    # 退出微信
    itchat.logout()

if __name__ == '__main__':
    send_message()

在上面的代码中,我们使用requests库发送HTTP请求,获取天气和微博热搜的HTML代码。我们使用BeautifulSoup库解析HTML页面,并找到天气和微博热搜数据所在的区域。我们使用for循环遍历区域中的每一个数据,并提取日期、温度、天气、风力、排名、标题和热度信息。我们将数据保存到一个列表中。

我们定义一个send_message函数,用于发送天气和微博热搜数据到微信好友。我们使用itchat库创建微信自动登录对象,并使用auto_login方法登录微信。我们使用itchat库的send方法发送天气和微博热搜数据到微信好友。最后,我们使用logout方法退出微信。

示例1:发送全国天气数据

以下是一个示例代码,用于发送全国天气数据:

import requests
from bs4 import BeautifulSoup
import itchat

# 发送HTTP请求
url = 'http://www.weather.com.cn/textFC/hb.shtml'
response = requests.get(url)

# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
conMidtab = soup.find('div', {'class': 'conMidtab'})
tables = conMidtab.find_all('table')

# 处理数据
data = []
for table in tables:
    trs = table.find_all('tr')[2:]
    for tr in trs:
        tds = tr.find_all('td')
        city = tds[0].text.strip()
        weather = tds[1].text.strip()
        temperature = tds[2].text.strip()
        wind = tds[3].text.strip()
        data.append([city, weather, temperature, wind])

# 发送数据到微信好友
def send_message():
    # 登录微信
    itchat.auto_login(hotReload=True)
    # 发送天气数据
    message = '全国天气:\n'
    for d in data:
        message += '城市:{},天气:{},温度:{},风力:{}\n'.format(d[0], d[1], d[2], d[3])
    itchat.send(message, toUserName='filehelper')
    # 退出微信
    itchat.logout()

if __name__ == '__main__':
    send_message()

在上面的代码中,我们使用requests库发送HTTP请求,获取全国天气页面的HTML代码。我们使用BeautifulSoup库解析HTML页面,并找到天气数据所在的表格。我们使用for循环遍历表格中的每一行数据,并提取城市、天气、温度和风力信息。我们将数据保存到一个列表中。

我们定义一个send_message函数,用于发送全国天气数据到微信好友。我们使用itchat库创建微信自动登录对象,并使用auto_login方法登录微信。我们使用itchat库的send方法发送全国天气数据到微信好友。最后,我们使用logout方法退出微信。

示例2:发送微博热搜数据

以下是另一个示例代码,用于发送微博热搜数据:

import requests
from bs4 import BeautifulSoup
import itchat

# 发送HTTP请求
url = 'https://s.weibo.com/top/summary?cate=realtimehot'
response = requests.get(url)

# 解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table')

# 处理数据
data = []
for tr in table.find_all('tr')[1:]:
    tds = tr.find_all('td')
    rank = tds[0].text.strip()
    title = tds[1].text.strip()
    hot = tds[2].text.strip()
    data.append([rank, title, hot])

# 发送数据到微信好友
def send_message():
    # 登录微信
    itchat.auto_login(hotReload=True)
    # 发送微博热搜数据
    message = '微博热搜:\n'
    for d in data:
        message += '排名:{},标题:{},热度:{}\n'.format(d[0], d[1], d[2])
    itchat.send(message, toUserName='filehelper')
    # 退出微信
    itchat.logout()

if __name__ == '__main__':
    send_message()

在上面的代码中,我们使用requests库发送HTTP请求,获取微博热搜页面的HTML代码。我们使用BeautifulSoup库解析HTML页面,并找到热搜数据所在的表格。我们使用for循环遍历表格中的每一行数据,并提取排名、标题和热度信息。我们将数据保存到一个列表中。

我们定义一个send_message函数,用于发送微博热搜数据到微信好友。我们使用itchat库创建微信自动登录对象,并使用auto_login方法登录微信。我们使用itchat库的send方法发送微博热搜数据到微信好友。最后,我们使用logout方法退出微信。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python趣味挑战之爬取天气与微博热搜并自动发给微信好友 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 使用python测试prometheus的实现

    Prometheus是一种开源的监控系统,可以用于监控各种应用程序和服务。Python是一种流行的编程语言,可以用于编写测试脚本和自动化测试工具。本文将详细讲解如何使用Python测试Prometheus的实现,包括安装Prometheus和Python库、编写测试脚本和运行测试用例。 安装Prometheus和Python库 在开始测试之前,我们需要安装P…

    python 2023年5月15日
    00
  • 使用Python操作excel文件的实例代码

    我为你提供一份完整的使用Python操作Excel文件的实例代码教程。 环境准备 在操作Excel文件前需要安装Python第三方库openpyxl,使用pip命令安装即可。 pip install openpyxl 打开Excel文件 打开本地的Excel文件并读取其中的数据内容。 import openpyxl # 打开文件 workbook = ope…

    python 2023年5月13日
    00
  • python中heapq堆排算法的实现

    以下是关于“Python中heapq堆排算法的实现”的完整攻略: 简介 堆排算法是一种常用的排序算法,它可以将一个无序的序列转换为一个有序的序列。Python中的heapq模块提供了堆排算法的实现。本教程将介绍如何使用Python中的heapq模块实现堆排算法,并提供两个示例。 heapq模块 heapq模块是Python中的一个标准库,它提供了堆排算法的实…

    python 2023年5月14日
    00
  • Python中scrapy下载保存图片的示例

    下面是Python中scrapy下载保存图片的示例的完整攻略。 创建项目 首先需要在终端中使用以下命令创建一个新的scrapy项目: scrapy startproject scrapy_image_downloader 这将在当前目录下创建一个名为scrapy_image_downloader的文件夹,其中包含项目的初始目录结构。 编写爬虫 在项目目录中,…

    python 2023年5月19日
    00
  • Python爬取英雄联盟MSI直播间弹幕并生成词云图

    好的。Python爬取英雄联盟MSI直播间弹幕并生成词云图的完整攻略包含以下步骤: 步骤一:准备工作 首先,需要安装以下两个Python库:requests和beautifulsoup4。 可以通过以下命令在命令行窗口中安装: pip install requests pip install beautifulsoup4 步骤二:爬取弹幕数据 使用reque…

    python 2023年5月20日
    00
  • Python随机数函数代码实例解析

    Python随机数函数代码实例解析 随机数在编程中经常使用,Python内置了多个随机数函数,本文将对常用的随机数函数进行详细的讲解,同时提供两个示例进行说明。 random模块常用函数 Python中的随机数生成依赖于random模块,以下是random模块中常用的函数: random():用于生成[0, 1)的浮点数。 randint(a, b):用于生…

    python 2023年5月14日
    00
  • 浅谈matplotlib 绘制梯度下降求解过程

    浅谈matplotlib 绘制梯度下降求解过程 1. 简介 在机器学习中,梯度下降算法是十分常用的优化算法。在使用梯度下降算法时,我们通常会关注到每一步的变化过程,以便更好地理解算法的表现及收敛速度。因此,使用matplotlib可视化梯度下降过程十分有助于我们理解算法。 2. 绘制梯度下降过程 在Python中,我们可以使用matplotlib库绘制梯度下…

    python 2023年5月18日
    00
  • 解决Python 异常TypeError: cannot concatenate ‘str’ and ‘int’ obj…

    解决Python异常TypeError: cannot concatenate ‘str’ and ‘int’ objects 在Python中,当我们尝试将字符串和整数拼接在一起时,可能会出现以下异常: TypeError: cannot concatenate ‘str’ and ‘int’ objects 这是因为Python不允许将字符串和整数直接拼…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部