全球主机交流论坛

标题: Online特价机监控源码,需要的拿去吧 [打印本页]

作者: cdwyd    时间: 2017-8-2 12:18
标题: Online特价机监控源码,需要的拿去吧
本来想弄一个7Ohdd的,可惜没上,一步到位买了个20O的。
不提供任何技术支持,有疑问的可以跟帖,请勿私信或者加QQ询问使用方法 谢谢。
  1. import re
  2. import time
  3. import requests
  4. from datetime import datetime
  5. from bs4 import BeautifulSoup
  6. from selenium import webdriver
  7. from selenium.webdriver.common.keys import Keys


  8. prices = ['6.99', '16.99', '19.99']
  9. check_interval = 60
  10. keys = [
  11.     '你的Server酱的key',
  12.     '其他的Server酱的key',
  13. ]
  14. timeout = 20
  15. notified = {}
  16. notice_times = 5
  17. driver = None


  18. def check_special_offer():
  19.     try:
  20.         if not driver:
  21.             start_driver()
  22.         driver.get('https://www.online.net/en/summer-2017/sales')
  23.         sid = driver.find_elements_by_name('server_offer')[0]
  24.         driver.execute_script("arguments[0].setAttribute('value','10010')", sid)
  25.         sid.submit()
  26.         html = driver.page_source
  27.         soup = BeautifulSoup(html, 'html.parser')
  28.         trs = soup.find_all('tr')
  29.         for tr in trs:
  30.             tds = tr.find_all('td')
  31.             if tds and tds[-1].find('form'):
  32.                 tds_text = [td.text for td in tds]
  33.                 price = tds_text[-2].replace(' € pre-tax', '').strip()
  34.                 details = '\n\n'.join(tds_text[:-1])
  35.                 if price in prices:
  36.                     if notified.get(price, 0) < notice_times:
  37.                         send_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  38.                         text = '{}O有货啦'.format(price)
  39.                         desp = details + '\n\n' + send_time
  40.                         notified[price] = notified.get(price, 0) + 1
  41.                         print('{}O有货了,第{}次通知'.format(price, notified[price]))
  42.                         for key in keys:
  43.                             send_message(key, text, desp)
  44.                             time.sleep(1)
  45.                     else:
  46.                         print('{}O的相关信息超过最大通知次数,不再微信通知...'.format(price))
  47.                 else:
  48.                     notified.setdefault(price, 0)
  49.     except Exception as e:
  50.         print(e)
  51.         pass
  52.             

  53. def send_message(key, text, desp = ''):
  54.     url = 'https://sc.ftqq.com/{}.send'.format(key)
  55.     data = {
  56.         'text': text,
  57.         'desp': desp
  58.     }
  59.     r = requests.post(url, data = data, timeout = timeout)


  60. def start_driver():
  61.     global driver
  62.     chromeOptions = webdriver.ChromeOptions()
  63.     prefs = {
  64.         "profile.managed_default_content_settings.images": 2,
  65.         'profile.managed_default_content_settings.javascript': 2
  66.     }
  67.     chromeOptions.add_experimental_option("prefs", prefs)
  68.     driver = webdriver.Chrome(chrome_options = chromeOptions)
  69.     # service_args=[]
  70.     # service_args.append('--load-images=no')  ##关闭图片加载
  71.     # service_args.append('--disk-cache=yes')  ##开启缓存
  72.     # service_args.append('--ignore-ssl-errors=true') ##忽略https错误
  73.     # service_args.append('--ignore-ssl-errors=true')
  74.     # service_args.append('--ssl-protocol=TLSv1')
  75.     # cap = webdriver.DesiredCapabilities.PHANTOMJS
  76.     # cap["phantomjs.page.settings.javascriptEnabled"] = False
  77.     # driver = webdriver.PhantomJS(desired_capabilities = cap, service_args = service_args)
  78.     driver.implicitly_wait(timeout)
  79.     driver.set_page_load_timeout(timeout)




  80. def main():
  81.     while True:
  82.         try:
  83.             check_special_offer()
  84.             print('{}秒后再次检查,当前时间: {}'.format(check_interval, datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
  85.             time.sleep(check_interval)
  86.         except Exception as e:
  87.             print(e)
  88.             pass


  89. if __name__ == '__main__':
  90.     main()

复制代码

作者: leopard    时间: 2017-8-2 12:22
大神出现了。。……………………
作者: cquyf    时间: 2017-8-2 12:36
不会用,
作者: 流河旱树    时间: 2017-8-2 12:40
这怎么用的啊?
作者: jianyanwei    时间: 2017-8-2 12:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: cdwyd    时间: 2017-8-2 12:43
流河旱树 发表于 2017-8-2 12:40
这怎么用的啊?

给ps个护照呗,我教你怎么用
1. 安装python3.x
2. 安装依赖:pip install requests selenium beautisoup4
3. 下载chromedriver
4. 添加你自己的微信通知的key
5. python online.py
6. 完了
作者: cdwyd    时间: 2017-8-2 12:43
cquyf 发表于 2017-8-2 12:36
不会用,

见楼上
作者: Firefly    时间: 2017-8-2 12:45
谢谢大神分享
作者: yugan300    时间: 2017-8-2 12:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 流河旱树    时间: 2017-8-2 13:23
cdwyd 发表于 2017-8-2 12:43
给ps个护照呗,我教你怎么用
1. 安装python3.x
2. 安装依赖:pip install requests selenium beauti ...

厉害啊 你买了几台
作者: ctmj01    时间: 2017-8-2 14:35
马克
作者: 傻逼真的很傻    时间: 2017-8-2 14:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: suantong    时间: 2017-8-2 14:56
爬虫大佬就是牛逼,随随便便就要start driver
作者: baymin    时间: 2017-8-2 15:33
绑定
作者: 西贝小鱼儿    时间: 2017-8-2 15:42
大佬代码牛逼
作者: 西贝小鱼儿    时间: 2017-8-2 15:43
大佬代码牛逼,不过直接用py2可以不?
作者: hurri    时间: 2017-8-2 22:08
收藏了,感谢
作者: kelvin225    时间: 2017-8-2 22:15
开车开车 没想到吧
作者: 无分人    时间: 2017-8-4 23:31
不会用。。。姿势不对?

作者: eben    时间: 2017-8-24 11:05
大婶的这个监控吊吊的
作者: zctr    时间: 2017-8-24 11:29
回头研究
作者: 怪人    时间: 2017-8-24 12:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: cdwyd    时间: 2017-8-24 12:22
刚上来就看到有提醒,原来有人在挖坟哈哈
作者: huahudie    时间: 2017-8-24 23:28
厉害了,但还是没太懂




欢迎光临 全球主机交流论坛 (https://hostloc.gdisk.cf/) Powered by Discuz! X3.4