前段时间国际飞机票非常难买,所以做了个小程序自动点击来监控机票网站(东方航空)的刷新。(虽然最后也没有刷到票,不过学习了一下简单的爬虫知识和发邮件的代码,改写后还能为自己使用,挺不错的)。
依赖环境:selenium,chrome driver,smtplib

用selenium中的by_css_selector来做的。在chrome中按F12进入开发者模式,有个小鼠标,将小鼠标对准某个元素,显示的蓝色字体部分就是css的定位码。 有时候网速太慢,需要通过sleep来提供足够的加载等待时间。
随后用smtplib来发邮件。(注意设置的代理邮箱里面需要设置POP3/SMTP服务的权限)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium. webdriver.support.wait import WebDriverWait
import datetime
import time
from pyquery import PyQuery as pq
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Headerdef send_massage(happy_title,happy_news):# 1. 连接邮箱服务器con = smtplib.SMTP_SSL('smtp.qq.com', 465)# 2. 登录邮箱con.login('10001@qq.com', 'sgvvlcegqtihbdch')# 2. 准备数据# 创建邮件对象msg = MIMEMultipart()# 设置邮件主题subject = Header(happy_title, 'utf-8').encode()msg['Subject'] = subject# 设置邮件发送者msg['From'] = '10001@qq.com <100001@qq.com>'# 设置邮件接受者msg['To'] = 'emialget@163.com'# 添加文字内容text = MIMEText( happy_news, 'plain', 'utf-8')msg.attach(text)# 3.发送邮件con.sendmail('100001@qq.com', 'emialget@163.com', msg.as_string())print("已发送")con.quit()def click_page():browser=webdriver.Chrome()url='https://global.ceair.com/'browser.get(url)for i in [19,26,33,47,18,25]:time.sleep(5)input_city=browser.find_elements_by_css_selector('input.ceair-input__inner.ceair-input__inner_homesearch')input_city[0].clear()input_city[0].send_keys('伦敦')time.sleep(5)a=browser.find_elements_by_css_selector('.search-result-airport .search-result-airport-1')time.sleep(1)aa[1].click()input_city[1].clear()input_city[1].send_keys('上海')time.sleep(5)b=browser.find_elements_by_css_selector('.search-result-airport .search-result-airport-1')btime.sleep(5)b[4].click()time_content=browser.find_element_by_css_selector(".fr.dateSelectBox .ceair-input__inner")time_content.click()time.sleep(5)time_button=browser.find_elements_by_css_selector(".days .cell")time_button[i].click()submit=browser.find_element_by_css_selector("button.ceair-button.submit-btn.ceair-button--danger")submit.click()time.sleep(20)html=browser.page_sourcedoc=pq(html)dic=[]product={'start_time':doc('span.title-depart-time').text(),'time':doc('.detail-container.flex-col.al-center div.time-container').text(),'end_time':doc('div.title-arrive-time').text(),'status':doc('span.title-pre-buy').text()}if product['status'] == "客满":print(f"客满,现在是{i}")else:# happy_news = f'第{i-2}日出现了票!'# happy_title = '抢到票啦!有票刷新啦!快登入东航官网!'# send_massage(happy_title,happy_news)print(f"now is {i}:")print(product['status'])dic.append(product)browser.back()continueprint('down')jsString = "document.querySelector('.fr.dateSelectBox .ceair-input__inner').removeAttribute('readonly')"browser.execute_script(jsString)browser.find_element_by_css_selector(".fr.dateSelectBox .ceair-input__inner").clear()browser.find_element_by_css_selector(".fr.dateSelectBox .ceair-input__inner").send_keys('2020-08-22')if __name__ == "__main__" :cnt = 48times = 0news = '我会每半小时搜索一次官网!有消息立刻发邮件通知,如果没有消息的话也会6小时通知一次!'title = '东航搜索小助手已启动!'send_massage(title, news)while(cnt >= 0):times = times +1click_page()print(f"完成今日的第{times}次监控")time.sleep(1800)#半小时搜索一次if (times % 12 == 0):news = '0.0'title = '距离上次搜索已过去6小时,没有搜索到票'send_massage(title,news)

航空网站航班查询自动点击提醒器相关推荐

  1. 一秒点击手机屏幕次数_抓住夏天的尾巴|与自动点击评论器邂逅一次

    "夏天"好像是有个浪漫的季节,夏天的晚风,轻轻吹动窗台上的帘子,暮色朦胧舒适到差点我就要这样过一生了. 因为它突如其来的高温天气,热的人们猝不及防,空调.西瓜.冰棍儿.游泳池.野外 ...

  2. html自动点击屏幕,虚拟按键大师(屏幕自动点击辅助器)

    很多小伙伴不知道虚拟按键精灵该怎么使用,这篇文章教你玩转按键精灵,挂各种软件. 首先你打开虚拟按键精灵 上面基本不用看了,直接点这个进去后有一系列的操作指南,如果不会的话请看下一个操作. 先检查权限, ...

  3. js按钮触发网页提醒_jquery,js页面加载时自动点击触发jq按钮-Go语言中文社区

    jq加载时自动执行事件需要这样写 $(function(){ $('.signinpanel').hide();//加载时,隐藏一个元素 }) jq加载页面时自动点击按钮,则 按钮 function ...

  4. 鼠标自动点击脚本_613个主流网站中发现点击劫持脚本

    香港中文大学.微软研究院.韩国首尔大学和宾夕法尼亚大学的研究人员对点击劫持进行了研究,发现有613个主流网站存在拦截用户点击的恶意脚本. Clickjacking即点击劫持,已经广泛应用于广告行业了, ...

  5. cn域名注册十元_网站域名查询、域名注册流程详解

    域名是网站的网址,有了域名,用户才能方便且准确地找到相应的网站.如果你想建立一个网站,你需要先注册一个域名.关于域名,很多人还不知道该如何查询和注册,所以今天就给大家解答下这个问题. 1.域名查询 网 ...

  6. python+splinter实现12306网站刷票并自动购票流程

    python+splinter实现12306网站刷票并自动购票流程 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站 ...

  7. 学历查询,邮件查询,身份证查询,聊天室查询,日期时间查询,列车飞机航班查询,等各种各类的查询网

    EMS全球快递邮件号查询 http://www.ems.com.cn/ems/index.jsp 中国高等教育学历网上证书查询 http://www.chsi.com.cn/xlcx/ 中国黄历查询, ...

  8. 基于 MVC 模式实现简单 航班查询系统

    文章目录 一.前言 二.功能要求: 三.代码展示: View: Model层: Cotroller层: 四.效果展示: 后记: 一.前言 本文 MVC 模式的一个简单案例,可以作为 练习 MVC 模式 ...

  9. ## 大一java课程设计_航班查询系统(我是小白)

    大一java课程设计_航班查询系统(我是小白) 备注:第一个java程序有借鉴别人的成分,因为忘了在哪个大佬上面借鉴的,所以在此备注,如有侵权,请联系删除,(仅用于学习使用,并未想盈利) 框体介绍 一 ...

最新文章

  1. Java项目:前后端分离网上手机商城平台系统设计和实现(java+vue+redis+springboot+mysql+ssm)
  2. oracle不能用uuid,Oracle 应用之--VirtualBox UUID问题
  3. 简述python程序结构_python架构的概念讲解
  4. DelphiX教程系列 3 - 动画 part 1
  5. winpcap的程序(转)
  6. ApacheCN 未来发展方向(暂定)2019.8.2
  7. 加工中心宏程序生成器_数控加工中心通用铣螺纹宏程序
  8. C程序设计语言现代方法02:C语言基本概念
  9. iOS越狱开发theOS搭建
  10. 2019百度之星程序设计大赛 1005 Seq
  11. [CodeComplete]创建一个函数需要理由吗
  12. CSS + JavaScript 实现八卦太极图
  13. 一阶线性微分方程 解法
  14. orc识别较慢_OCR 中文识别用哪种软件识别率比较高?
  15. 微信分享带图片,描述(php版)
  16. python是全世界最好的语言学校_______是全世界最好的语言
  17. python数据统计分析
  18. 统计项目代码行数 intelliJ idea statistic 插件
  19. Vue-router无刷新删除页面参数
  20. jedis异常:Could not get a resource from the pool

热门文章

  1. android系统架构,文件目录
  2. Linux源码目录结构
  3. 个人的第一个Chrome插件ColorConversion
  4. 和跨域CORS有关的几个请求头和响应头请求头
  5. c#拼图碎片形状,用c#制作图片拼图
  6. OpenCV中HSV与PS中HSB对应关系
  7. β阶段第一周版本控制报告
  8. python实现自动打卡_python实现腾讯文档自动打卡教程
  9. 易语言网易云音乐登录post源码
  10. 利用手机访问电脑上开发的html页面