【Python】-[初学笔记]-用Pushover推送微博热搜到手机
用re找到微博热搜内容条目,再转换成一个整体内容,
通过pushover提供的api接口发起推送,
当然手机上也要安装pushover。
就会收到消息推送了。
import time
import requests
import re
url = 'https://s.weibo.com/top/summary?cate=realtimehot'
headers = {
'User-Agent': 'Chrome/96.0.4664.45 Safari/537.36','Cookie': 'SUB=_',
'Referer': 'https://s.weibo.com/'}
resp = requests.get(url,headers=headers)
page_content = resp.text.encode('gbk','ignore').decode('gbk')# 解决某些网站好多编码不能解析的问题
resp.close()
obj = re.compile(r'<td class="td-01 ranktop">(?P<rank>.*?)</td>.*?'
r'<a href="(?P<herf>.*?)" target="_blank">(?P<title>.*?)'
r'</a>.*?<span>(?P<hotness>.*?)</span>',re.S)
result = obj.finditer(page_content)
count = 0
weibo_list = []
for it in result:
if count < 20:# 控制推送条数
weibo_list.append(f"{it.group('rank')}.{it.group('title')}")
count += 1
push_url = 'https://api.pushover.net/1/messages.json'
# 在https://pushover.net 注册账户就会有user码,再创建个Application就有了token
# 手机也装个Pushover就能就收到消息了
message = str(weibo_list).replace('[','').replace(']','').replace("'",'').replace(',','\n')
data = {
"token":"xxxx", # 用自己的token
"user":"xxxx", # 用自己的user码
"title":f"微博热搜-{time.localtime()}月{time.localtime()}日", # 推送的标题
"message":message, # 推送的内容
"sound":"tugboat" # 推送的提示音类型
}
resp = requests.post(push_url,data=data)
print('推送成功' if resp.json()['status']==1 else '推送失败')
http://inews.gtimg.com/newsapp_ls/0/14555584182/0 poor567 发表于 2022-5-15 08:42
https://s.weibo.com/top/summary?cate=socialevent
我是这样想的,如果每一个网页的抓取方式不同,那 ...
pushover倒不用改什么,改一下提取要闻那个列表文字就可以。
代码这样:
import time
import requests
from lxml import etree
url = 'https://s.weibo.com/top/summary?cate=socialevent'
headers = {
'User-Agent': 'Chrome/96.0.4664.45 Safari/537.36', 'Cookie': 'SUB=_',
'Referer': 'https://s.weibo.com/'}
resp = requests.get(url, headers=headers)
page_content = resp.text.encode('gbk', 'ignore').decode('gbk')# 解决某些网站好多编码不能解析的问题
tree = etree.HTML(page_content)
title_list = tree.xpath('//*[@id="pl_top_realtimehot"]/table//tr/td/a/text()')
count = 0
weibo_list = []
for title in title_list:
if count < 20:# 控制推送条数
# print(title)
weibo_list.append(title.strip('#'))
count += 1
push_url = 'https://api.pushover.net/1/messages.json'
# # 在https://pushover.net 注册账户就会有user码,再创建个Application就有了token
# # 手机也装个Pushover就能就收到消息了
message = str(weibo_list).strip('[]').strip("'").replace("', '",'\n')
# print(message)
data = {
"token": "xxxx",# 用自己的token
"user": "xxxx",# 用自己的user码
"title": f"微博要闻-{time.localtime()}月{time.localtime()}日",# 推送的标题
"message": message,# 推送的内容
"sound": "tugboat"# 推送的提示音类型
}
resp = requests.post(push_url, data=data)
print('推送成功' if resp.json()['status'] == 1 else '推送失败') 本帖最后由 poor567 于 2022-5-15 08:46 编辑
surepj 发表于 2022-5-14 21:29
不同的网页的内容抓取方式不太一样,这个只作用于微博热搜,微博要闻是什么网址呢?
https://s.weibo.com/top/summary?cate=socialevent
我是这样想的,如果每一个网页的抓取方式不同,那么pushover的应用范围就要难上不少呀 xpath更简单一些 elviss 发表于 2022-2-24 20:57
xpath更简单一些
是的。但微博热搜里有个商业推广,和置顶的用xpath不好去掉。 Pushover只能试用30天,太拉了,有没有类似的推送服务,app端的 我也打算学py了 这就去414 学到了,
准备学习py了,没有javascript基础可行{:1_918:} 师大帅哥 发表于 2022-2-24 22:32
Pushover只能试用30天,太拉了,有没有类似的推送服务,app端的
是啊,付费的话30元。要么就只能重新用邮箱注册个账号 dachairen 发表于 2022-2-25 08:11
准备学习py了,没有javascript基础可行
我也是学着玩的小白,没有任何编程基础
页:
[1]
2