本攻略将介绍如何使用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技术站