Python写网络爬虫:实时监测澳币的汇率变化并在低于某个阈值的时候通过qq给我的iphone发消息

代码:

import win32gui
import win32con
import win32clipboard as w
import time
import requests
from lxml import etree

def request_page(session,url,headers):		#根据创建的会话、规定的url和headers来请求页面
    response = session.get(url,headers=headers)
    txt = response.text				#把抓到的数据存入变量
    # print(txt)
    return txt		

def txt_to_html(txt)			#把获得的text文本转化成html格式的数据:
    html = etree.HTML(txt)
    return html



def html_to_data(html,filter_condition=''):		#用xpath来提取想要的数据
    span_data = html.xpath(filter_condition)
    return span_data




if __name__ == '__main__':

    url = 'https://cn.investing.com/currencies/aud-cny-historical-data/'	#创建url
    agent = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0',
             'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
             ]		#用不同的浏览器中的user-agent信息建立一个列表,方便后面随时切换改变代理,不容易被发现爬虫
    user_agent = agent[0]		#user-agent 默认使用第一个agent
    headers = {
        'Referer': 'https://www.baidu.com/',		#构造请求头
        'User-Agent': user_agent
    }
    session = requests.Session()					#创建会话
    count = 0										
    while True:
        txt = request_page(session,url,headers)
        html = txt_to_html(txt)
        data = html_to_data(html,filter_condition='//div[@class="float_lang_base_1 bold"]/span[@id="fl_header_pair_lst"]/text()')
        data = float(data[0])
        print(data,type(data))
        # print(data,user_agent)
        if data <= 4.97:
            msg = '汇率已经到达4.97'				#下面的部分是给qq发消息的过程
            name = "我的iphone"					#指定窗口名
            w.OpenClipboard()					#打开剪切板
            w.EmptyClipboard()					#清空剪切板
            w.SetClipboardData(win32con.CF_UNICODETEXT, msg) #把文本msg写到剪切板
            w.CloseClipboard()					#关闭剪切板
          			
            handle = win32gui.FindWindow(None, name)	#通过指定的窗口名来找到窗口句柄
            win32gui.SendMessage(handle, 770, 0, 0)		#给窗口的发消息框中把剪切板中的内容粘贴进去
            											
            win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)	# 回车发送消息
        time.sleep(5)									#让程序睡5s,防止高频率请求网站导致ip被封										
        count += 1										#使用计时器,每请求三次页面就换一个 user-agent
        if count % 3 == 0:
            user_agent = agent[1]
        else:
            user_agent = agent[0]


效果:

汇率已经到达4.97

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值