专栏首页Pou光明Python爬取天气状况发送给微信好友

Python爬取天气状况发送给微信好友

上次和大家分享了爬取天气信息的python程序,程序上还有很多缺点,需要再了解一些html和css等相关知识后,才会把爬虫的程序做的更好。

我们爬取到天气数据之后,接下来应该做些什么有趣的事情的呢?我们可以把这些天气数据发送给父母和微信好友~若要实现后面的功能,我们可以使用python的wxpy模块和wechat_sender模块。一直以来都希望可以把程序的一些功能关联到生活中,到现在,这个愿望终于要达成了。

程序平台:ubuntu16.04(x86)、python3.7

Python3.7相关模块的安装:

sudo python3.7 -m pip install wxpy

其他模块以此类推

一、 Wechat_Sender介绍

随时随地发消息到微信。wechat_sender 是基于 wxpy 和 tornado 实现的一个可以将你的网站、爬虫、脚本等其他应用中各种消息 (日志、报警、运行结果等) 发送到微信的工具。

使用起来也很方便,监听侧Bot()初始化后,使用listen()监听,手机端扫码登录后,就可以使用wechat_sender的Sender()进行发送消息了。

1. Bot程序:

# coding: utf-8

from __future__ import unicode_literals
from wxpy import *
from wechat_sender import listen

bot = Bot(‘bot.pkl’)
receivers = []

receivers.append(bot.file_helper)
#receivers.append(bot.friends().search('dapi')[0])    #多个接收者
#receivers.append(bot.friends().search('家_妈妈')[0])

print(receivers)

listen(bot, receivers = receivers)  #将Send()发送的消息发送给receivers

2. Sender侧程序

# coding: utf-8

from wechat_sender import Sender

Sender().sender(‘hello world’)

登录结果:

微信文件助手接收结果:

二、 发送爬取天气的结果

爬取天气结果组装数据成字典,然后再将字典拆解成字符串进行发送。

# coding: utf-8

import requests
from bs4 import BeautifulSoup
import re
from wechat_sender import Sender


def getWeath(city_code):
    try:
        print(city_code)
        url = 'http://www.weather.com.cn/weather/%s.shtml'%city_code
        ret = requests.get(url)
    except BaseException as e:
        print(e)
        return {}

    ret.encoding = 'utf-8'
    soup = BeautifulSoup(ret.text, 'html.parser')
    tagToday = soup.find('p', class_ = "tem")  #第一个包含class="tem"的p标签即为存放今天天气数据的标签
    try:
        temperatureHigh = tagToday.span.string  #有时候这个最高温度是不显示的,此时利用第二天的最高温度代替。
    except AttributeError:
        temperatureHigh = tagToday.find_next('p', class_="tem").span.string  #获取第二天的最高温度代替

    temperatureLow = tagToday.i.string  #获取最低温度
    weather = soup.find('p', class_ = "wea").string #获取天气
    wind = soup.find('p', class_ = "win") #获取风力
    clothes = soup.find('li', class_ = "li3 hot") #穿衣指数
  
    #print('最低温度:' + temperatureLow)
    #print('最高温度:' + temperatureHigh)
    #print('天气:' + weather)
    #print('风力:' + wind.i.string)
    #print('穿衣:' + clothes.a.span.string + "," + clothes.a.p.string)

    return {'温度':temperatureHigh + '/' + temperatureLow
    , '天气':weather
    , '风力':wind.i.string
    , '穿衣':clothes.a.span.string + ',' + clothes.a.p.string}

def strDic(dic):
    str_weather = ''
    for key in dic:
       str_weather += key + ':' + dic[key]
       str_weather += '\n'
    return str_weather

if __name__ == "__main__":
    wea_str = strDic(getWeath(101100701))
    Sender().send(wea_str)

结果如图:

本文分享自微信公众号 - Pou光明(pou0230),作者:PouG

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Qt插件入门——使用插件扩展Qt自身

    用于编写Qt自身扩展的高级API:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式等。本次的例子就是自定义样式的例子。

    用户5908113
  • Pythpon 爬取中国天气网数据

    以前看别人用python写爬取数据的程序感觉特牛掰,今天在网上找到了一个例子参考了下,自己也写了一个。之后会结合微信机器人,然后每隔一段时间给自己和好友发送天气...

    用户5908113
  • Qt显示视频流——(三)

    之前的两次我们已经搭建好了nginx+rtmp服务和ffmpeg推流工具,本次进行最后一步结合Qt显示视频流。

    用户5908113
  • 关于压测的宏观个人总结

    工作角色定位 首 先先从宏观角度来评估下本次的压测工作. 从工作职责上说本次压测理应由组内其它同学来完成,个人从旁协助或指导即可。团队成员的成长对我个人来说...

    小小科
  • 新手学Linux(二)----使用 Vagrant 打造跨平台开发环境(一)

    做Web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的Windows版,甚至是一键安装包,但很多时候和Windows环境的相性并不是那么好,各...

    令仔很忙
  • (数据科学学习手札25)sklearn中的特征选择相关功能

    一、简介   在现实的机器学习任务中,自变量往往数量众多,且类型可能由连续型(continuou)和离散型(discrete)混杂组成,因此出于节约计算成本、精...

    Feffery
  • 基于 HTML5 结合互联网+的电力接线图

     “互联网+”思维让数据的搜集和获取更加便捷,并且随着大数据的深度开发和应用,数据分析预测对于提升用户体验有非常重要的价值,同时也为不同行业、不同领域的合作提供...

    HT_hightopo
  • 简析Spring aop的BeanNameAutoProxyCreator如何对目标类生成代理

        注意:我们分析的版本是SpringFramework-3.2.8.RELEASE。

    克虏伯
  • 基于 HTML5 的电力接线图 SCADA 应用

    HT_hightopo
  • 基于 HTML5 的电力接线图 SCADA 应用

    在电力、油田燃气、供水管网等工业自动化领域 Web SCADA 的概念已经提出了多年,早些年的 Web SCADA 前端技术大部分还是基于 Flex、Silve...

    HT_hightopo

扫码关注云+社区

领取腾讯云代金券