『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6032|回复: 10

爬虫插件盖楼贴(萌新尝试)

[复制链接]

6

主题

60

帖子

460

积分

中级会员

Rank: 3Rank: 3

积分
460
金钱
395
HASS币
20
发表于 2019-3-1 22:30:16 | 显示全部楼层 |阅读模式
本帖最后由 ilikehassbian 于 2019-3-1 23:06 编辑

最近在论坛上看到了这个帖子【油价】萌新探索之四:第一个自制脚本爬取简单的HTML信息https://bbs.hassbian.com/thread-3360-1-1.html,寻思着也用这位大神的套路来套一下中国气象台,所以便开始自己琢磨,刚开始想直接抓网页数据,发现好像是引用了外部来的数据,所以没成功,只返回了空格,接下来我用浏览器开发者工具的network来抓了一下包,发现果然数据走了另外一条通道,网页只是引用数据,所以第一次没成功,但是我在network里发现了天气数据的地址,所以便改变了思路,改为从数据里用正则抓包,果然成功,所以便把我的第一个爬虫来给大家看看,后续有时间,我会再完善爬虫功能,毕竟我发现的这个api无限次数,还是气象台官方的,我会争取直接对接HASS,(此贴不断更新中)
下面爬虫

import requests
import re
self_city_code = '54511'
def get_html(url):
    heads = {}
    heads['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
    req = requests.get(url, headers=heads)
    req.encoding='utf-8'
    html = req.text
    return html


def get_weather(html):
    temp = r'"temperature":(.+),"airpressure'
    temperature = re.findall(temp, html)
    sumray = r'"info":"(.+)","img'
    sumraylist = re.findall(sumray, html)
    hum = r'"humidity":(.+),"rain'
    humidity = re.findall(hum, html)
    ra = r'"rain":(.+),"rcomfort'
    rain = re.findall(ra, html)
    feel = r'"feelst":(.+)},"wind"'
    feeltemp = re.findall(feel, html)
    presure = r'"airpressure":(.+),"humidity"'
    airpressure = re.findall(presure, html)
    print(sumraylist, temperature, humidity, airpressure, rain, feeltemp,)


if __name__ == '__main__':
    url = 'http://www.nmc.cn/f/rest/real/'+self_city_code+''
    get_weather(get_html(url))

具体爬虫配置请参考:https://bbs.hassbian.com/thread-3360-1-1.html
self_city_code 是气象台站,需要自己查询,这里默认北京,举几个例子:北京:54511 上海:58367 其他的需要自己去查,
http://www.doc88.com/p-6631998333691.html 或者百度:气象台站号
顺便说一下,这个爬虫还处于原型期,self_city_code ,只可以输出:温度、湿度、降雨量、概况、体感温度、气压。只可以用command_line sensor,并且需要自己制作template sensor,但是等我后期完善后,就直接可以接入hass了,不需要command_line了,自己目前还在研究HASS的开发者文档,应该会于近期发布完整版本,到时候,这个爬虫就应该会具有空气质量,七天预报等功能了,可以作为彩云替代品,而且不用担心api次数,还免费
研究网站不易,这也是我的第一个爬虫,求大神指教如何不用command_line 对接hass,请大神轻拍哦。
回复

使用道具 举报

12

主题

193

帖子

1138

积分

论坛积极会员

积分
1138
金钱
945
HASS币
0
发表于 2019-3-1 23:04:55 | 显示全部楼层
支持一下,期待你的HA产品。
回复

使用道具 举报

8

主题

2073

帖子

6055

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6055
金钱
3982
HASS币
145

灌水之王

发表于 2019-3-2 09:00:11 | 显示全部楼层
把论坛爬了呗,刷新可以久一点,几分钟都没事
回复

使用道具 举报

0

主题

153

帖子

1095

积分

金牌会员

Rank: 6Rank: 6

积分
1095
金钱
942
HASS币
0
发表于 2019-3-2 10:54:56 | 显示全部楼层
支持一下,谢谢分享!
回复

使用道具 举报

22

主题

519

帖子

1608

积分

金牌会员

Rank: 6Rank: 6

积分
1608
金钱
1089
HASS币
10
发表于 2019-3-2 12:24:40 | 显示全部楼层
xieahui 发表于 2019-3-2 09:00
把论坛爬了呗,刷新可以久一点,几分钟都没事

你想把论坛都爬光吧
回复

使用道具 举报

6

主题

60

帖子

460

积分

中级会员

Rank: 3Rank: 3

积分
460
金钱
395
HASS币
20
 楼主| 发表于 2019-3-2 13:49:41 | 显示全部楼层
xieahui 发表于 2019-3-2 09:00
把论坛爬了呗,刷新可以久一点,几分钟都没事

囧不把我锤死
回复

使用道具 举报

6

主题

60

帖子

460

积分

中级会员

Rank: 3Rank: 3

积分
460
金钱
395
HASS币
20
 楼主| 发表于 2019-3-2 13:50:53 | 显示全部楼层
pigcais 发表于 2019-3-2 12:24
你想把论坛都爬光吧

哈哈,本来打算发爬论坛的,可是...
回复

使用道具 举报

8

主题

2073

帖子

6055

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6055
金钱
3982
HASS币
145

灌水之王

发表于 2019-3-2 13:51:33 | 显示全部楼层

能爬最近一个礼拜的新帖子吗?
刷新可以几分钟都可以 这样不影响论坛性能吧
回复

使用道具 举报

6

主题

60

帖子

460

积分

中级会员

Rank: 3Rank: 3

积分
460
金钱
395
HASS币
20
 楼主| 发表于 2019-3-2 14:37:57 | 显示全部楼层
xieahui 发表于 2019-3-2 13:51
能爬最近一个礼拜的新帖子吗?
刷新可以几分钟都可以 这样不影响论坛性能吧  ...

我试过了,可以爬精华部分
回复

使用道具 举报

6

主题

90

帖子

524

积分

高级会员

Rank: 4

积分
524
金钱
434
HASS币
0
发表于 2019-4-1 22:32:36 | 显示全部楼层
https://www.hachina.io/docs/1976.html  这里有个py脚本,改改应该可以用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-4 01:20 , Processed in 0.054655 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表