一、背景

因业务需要获取风险经济事件并采取应对措施,但因为种种原因又疏忽于每天去查看财经日历,于是通过爬取金十数据网站并自动推送到微信查看。

二、目标实现

image

三、环境与工具

1、pycharm:python开发IDE

四、实现思路

爬虫获取风险事件,然后python通过句柄定位到微信窗口,模拟键鼠操作本机微信客户端发给好友(自己),最开始本来使用微信itchat库,但是这个是基于微信网页版,登录几次后微信提示:为了你的帐号安全,此微信号已不允许登录网页微信。你可以使用Windows微信或Mac。

五、主要代码

# -*- coding: utf-8 -*-

import scrapy

from selenium import webdriver

from scrapy import signals

import win32con,win32gui,time,win32api

import win32clipboard as w

import re

from datetime import datetime

hwnd = 394916 #微信窗口句柄,使用句柄工具获取

class JinshiSpider(scrapy.Spider):

name = 'jinshirili'

allowed_domains = ['jinshi.com']

start_urls = ['https://rili.jin10.com/']

@classmethod

def from_crawler(cls, crawler, *args, **kwargs):

spider = super(JinshiSpider, cls).from_crawler(crawler, *args, **kwargs)

options = webdriver.ChromeOptions()

options.add_argument('--headless')

spider.chrome = webdriver.Chrome(chrome_options=options)

crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed)

return spider

def spider_closed(self, spider):

spider.chrome.quit()

print('一次爬取结束-----等待下次循环爬取')

def parse(self, response):

#获取风险事件列表

contents = response.xpath('//div[@class="jin-rili_content J_rili_content"]//tr')

# print(len(contents))

for i,content in enumerate(contents):

searchObj = re.search(r'', content.extract(),re.I)

lljd = content.extract().__contains__("利率决")

if searchObj or lljd:

if int(searchObj.group(1)) >= 80 or lljd: #风险等级达到4星或者是利率决定

# print("searchObj.group(1) : ", searchObj.group(1))

#

美国至3月20日美联储利率决定(上限)

searchObj = re.search(r'

[\s\r\n]+([\u4e00-\u9fa50-9a-zA-Z]+)', content.extract(), re.I)

event = ""

timeS = ""

if searchObj :

event = searchObj.group(1)

# print("event : ", event)

#

02:00

searchObj = re.search(r'time.*>([0-9:]+)

if searchObj:

timeS = searchObj.group(1)

# print("time : ", time)

msg = event+" "+timeS

# self.sendMsgToWX(msg)

#8 12 19点推送到微信

if datetime.now().hour == 8 or datetime.now().hour == 12 or datetime.now().hour == 19 :

self.sendMsgToWX(msg)

print(msg)

def sendMsgToWX(self, msg):

# 将微信放在前台

win32gui.SetForegroundWindow(hwnd)

time.sleep(2)

# 将鼠标移到(750, 700)

win32api.SetCursorPos((750, 700))

# 单击左键获取焦点

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 750, 700, 0, 0)

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 750, 700, 0, 0)

time.sleep(1)

# 将内容写入到粘贴板

w.OpenClipboard()

w.EmptyClipboard()

w.SetClipboardData(win32con.CF_TEXT, msg.encode(encoding='gbk'))

w.CloseClipboard()

time.sleep(1)

# 单击鼠标右键弹出上下文菜单

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 750, 700, 0, 0)

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 750, 700, 0, 0)

time.sleep(1)

# 单击鼠标左键点击粘贴

win32api.SetCursorPos((770, 720))

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 770, 720, 0, 0)

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 770, 720, 0, 0)

time.sleep(1)

# 按回车键发送

win32gui.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)

win32gui.PostMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

python 实时数据推送_python scrapy 爬取金十数据并自动推送到微信相关推荐

  1. python爬虫教材推荐 豆瓣_Python爬虫爬取豆瓣书籍数据

    炎热的夏天,酷暑难挡,难免会心烦意燥,睡前随手拿起枕边看过很多遍的「平凡的世界」.看书,会让躁动的心瞬间安静下来. 生活不能等待别人来安排,要自己去争取和奋斗:而不论其结果是喜是悲,但可以慰藉的是,你 ...

  2. 利用Python爬取金十数据新闻事件

    刚入门爬虫,由于女朋友的工作需要,便写了这个爬虫程序.本人也是第一次发帖, 相信爬虫也没什么好介绍的.直接上代码. from selenium import webdriver from bs4 im ...

  3. python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析

    这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...

  4. scrapy爬取酒店评论数据

    scrapy爬取酒店评论数据 代码 here:GitHub:scrapy_hotel_review 采用scrapy爬取酒店评论数据. 总共有28W条记录. 做某NLP任务,需要一些hotel rev ...

  5. python实战|用scrapy爬取当当网数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进击者 ( 想要学习Python?Pyth ...

  6. python xpath循环_Python爬虫 爬取北京二手房数据

    点击蓝字"python教程"关注我们哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及 ...

  7. python爬取京东手机数据_用scrapy爬取京东的数据

    本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...

  8. python爬虫爬取多个页面_Python 爬虫爬取多页数据

    但是,按照常规的爬取方法是不可行的,因为数据是分页的: 最关键的是,不管是第几页,浏览器地址栏都是不变的,所以每次爬虫只能爬取第一页数据.为了获取新数据的信息,点击F12,查看页面源代码,可以发现数据 ...

  9. Python网络爬虫3 - 生产者消费者模型爬取某金融网站数据

    博客首发于www.litreily.top 应一位金融圈的朋友所托,帮忙写个爬虫,帮他爬取中国期货行业协议网站中所有金融机构的从业人员信息.网站数据的获取本身比较简单,但是为了学习一些新的爬虫方法和技 ...

最新文章

  1. ubuntu mysql emma_Ubuntu 11.10 MySQL客户端 Emma 6.0 中文乱码解决办法
  2. 技术进阶:Kubernetes高级架构与应用状态部署
  3. ​语义分割损失函数​
  4. poj-1062-昂贵的聘礼
  5. 什么是尾递归?测试python尾递归
  6. 从无盘启动看 Linux 启动原理
  7. Windows下 jupyter notebook 运行multiprocessing 报错的问题与解决方法
  8. MATLAB矩阵对称旋转
  9. python中pow_如何在python中找到pow(a,b,c)的反向?
  10. 周鸿祎为何忘不掉搜索?
  11. linux物理网卡地址没有,Linux更改网卡物理地址
  12. 无缝世界网游服务器架构的设计思路
  13. java中布尔类型的常量有哪两种,【填空题】Java中布尔型的常量有两种,它们是___和___。...
  14. java 调用存储过程structdescriptor_Spring SimpleJdbcCall如何在存储过程调用中为oracle STRUCT指定模式...
  15. 网页无法正常显示Lato字体,绕路而行
  16. ssh连接docker容器
  17. windows下解压xxx.war文件
  18. php fakepath,在文件上载中获取真实路径而不是“fakepath”
  19. php转png在线转换,png转ico在线工具
  20. js / vue 批量打印二维码图片、PDF、文档

热门文章

  1. win2008R2安装Epson630K共享打印 64位 32位通吃!
  2. 4万字总结,关于数据仓库与数据湖
  3. 告别“Excel+Email”的预算编制法︱全面预算
  4. 基本与包装类型全面对比
  5. 构建大型网站(百万级访问量)的技术准备
  6. Hadoop ViewFs允许hdfs schema的重载
  7. Java 接口与多态 实例
  8. web常见页面错误代码及介绍
  9. Stetho、 inspect
  10. stetho使用介绍