如题。只要新浪某个人的微博一更新,立刻实现qq群里也同步更新!
只获取最近一条内容,判断消息ID在不在文件中,不在就写入文件并发送QQ消息
# # -*- coding:utf-8 -*-
# '''
# 发送微博消息
# '''
from time import sleep
import win32gui
import win32con
import win32clipboard
import requests
from urllib.parse import urlencode
from os import path
class CSendQQMsg():
def __init__(self, friendName, msg):
self.friendName = friendName
self.msg = msg
def setText(self):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, self.msg)
win32clipboard.CloseClipboard()
def sendmsg(self):
self.setText()
hwndQQ = win32gui.FindWindow(None, self.friendName)
if hwndQQ == 0:
print('未找到qq对话框')
return
win32gui.SendMessage(hwndQQ, win32con.WM_PASTE, 0, 0)
win32gui.SendMessage(hwndQQ, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
class Weibo():
def __init__(self, userid):
self.base_url = 'https://m.weibo.cn/api/container/getIndex?'
self.headers = {
'Host': 'm.weibo.cn',
'Referer': 'https://m.weibo.cn/u/3549916270',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
self.userid = userid
def get_page(self):
params = {
'type': 'uid',
'value': self.userid,
'containerid': '107603' + str(self.userid),
'page': 1
}
url = self.base_url + urlencode(params)
try:
response = requests.get(url, headers=self.headers)
if response.status_code == 200:
return response.json()
except requests.ConnectionError as e:
print('Error', e.args)
def parse_page(self):
if self.get_page():
items = self.get_page().get('data').get('cards')
id = items[0].get('mblog').get('id')
text = items[0].get('mblog').get('text')
return id, text
if __name__ == '__main__':
friendName = '灰丶' # QQ用户名
weibo = Weibo('3549916270') # 微博用户ID
id, text = weibo.parse_page()
qq = CSendQQMsg(friendName, text)
while True:
if not path.exists('output.txt'):
with open('output.txt', 'a') as f:
f.write(id)
qq.sendmsg() # 发送QQ消息
else:
with open('output.txt', 'r', encoding='utf-8') as f:
data = f.read()
if id not in data:
with open('output.txt', 'a') as f:
f.write(id)
qq.sendmsg()
else:
print("微博内容id已在文件中")
sleep(10)
使用示例:
需要打开QQ对话框
定时轮询抓取用户微博链接的网页内容,然后分析获取到的内容,判断有没有发表新内容,如果有,则发QQ信息。
写个程序定时去抓这个博主的主页 有新内容就爬取一遍数据,至于同步qq群消息 可以pc端qq客户端窗体程序模拟发送 但比较麻烦 需要一定的开发能力
微博可以直接分析数据接口,得到接口地址模拟用户发送请求。成功拿到数据后。发送QQ消息,这就需要用代码模拟操作键盘,一般都是模拟control c和control V把消息复制粘贴放进去,然后enter发送
思路:做个定时器接口,每隔5秒或10s定时获取某个人的微博内容数据,可以只获取每条微博的唯一标识符,比如id,第一次将id的所有集合存到数据库,以后每次获取后将新的标识符集合和上一次的作比较,然后将标识符不存在旧集合中的微博信息更新并发送到QQ群
你用什么工具?
微博获取需编程调用浏览器,你需要把什么内容转发到QQ,那么你就在浏览器中打开网页,并按F12了解内容在哪个控件中和怎么获取。
获取到的内容,你可以调用WinAPI函数操作QQ完成,这个以前是有人写过的,但因为版本升级等原因,你要修改一下。
把微博的cookies获取到,然后定时取文本,绑定qq发送
用脚本,搭建服务器,往上面挂着就好啦,python写个定时实时抓取
首先爬去微博和分享都需要使用网页版,然后用selenium模拟人工操作