Geektool 使用 python+beautifulsoup 抓取天气显示


闲来无事,就想着捣鼓捣鼓电脑,想在电脑桌面实时显示天气状况.就用 geektool + python + beautifulsoup 写了一个抓取天气网站的脚本来显示.

效果

先看实现出来的效果

实现思路

用 python 去爬取天气网站的内容,解析抓取到的内容,提取今日的温度信息和天气天气,然后显示在 geektool 上面

天气网站

我这边选用的是 weather channel
在网站里面把地址切换到你想抓取的地区.

如图,可以看到实时温度现在

1
<div class="today_nowcard-temp"><span class="">25<sup>°</sup></span></div>

所以我们只要抓取 class为 today_nowcard-temp的标签,获取标签下面的文本内容 就是我们想要的温度信息.
同理天气状况 只要抓取

1
<div class="today_nowcard-phrase">晴朗</div>

的内容

准备开发

使用 beautifulsoup 去抓取页面内容.所以我们需要安装.由于 geektool 使用python 的版本是 2.7.10的.所以我们要在 python2.7里面安装 beautifulsoup.
安装命令

1
python -m pip install beautifulsoup4

然后查看有没有安装成功

1
python -m pip list

如果有显示 beautifulsoup4的包就是安装成功了.如果没有的话就没有安装成功.

如果你那么不幸运没有安装成功.就只能去 beautifulsoup download 去下载源码.
然后切换到beautifulsoup的setup.py 的命令目录
执行

1
2
python setup.py build
python setup.py install

执行成功后
在查看安装的包,就看到安装成功了.

执行脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import urllib
import os
from bs4 import BeautifulSoup
import re
if __name__ == '__main__':
resp=urllib.urlopen('https://weather.com/zh-CN/weather/today/l/5ef652409badc75c97292b401c6db8e8e55a3157f300dc0997bea96343e4a20a')
soup=BeautifulSoup(resp,'html.parser')
tagToday=soup.find('div',attrs={'class':'today_nowcard-temp'})
print(tagToday.span.get_text())

可以看到 geektool 输出温度信息了,然后在 geektool 里面修改样式就好了
天气信息同理

Adhere to original technology sharing, your support will encourage me to continue to create!