import time import traceback import dataset from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from celery import Celery #import redis from celery.schedules import crontab import celery from celery.signals import celeryd_init from celery import signals import random from click import Option from selenium import webdriver import time import sys import os import zipfile from seleniumwire import webdriver import requests #from selenium import webdriver PROXY_PORT = 8080 # port PROXY_USER = 'choozmo' # username PROXY_PASS = 'Chuz83102968' # password custname=None param=sys.argv[1] rnd=True if len(sys.argv)>=3: rnd=False r = requests.get('http://db.ptt.cx:3001/api/push/'+param+'?status=up&msg=OK&ping=') #U1cGPOJAQD #http://db.ptt.cx:3001/api/push/hzmMjOaHpl?status=up&msg=OK&ping= def selenium_jared_click(): global custname global rnd r=random.randint(0,4) options = {} if r==0: options['proxy']={'http': 'http://choozmo:Chuz83102968@172.105.205.52:8080'} if r==1: options['proxy']={'http': 'http://choozmo:Chuz83102968@139.144.120.184:8080'} if r==2: options['proxy']={'http': 'http://choozmo:Chuz83102968@172.104.92.245:8080'} if r==3: options['proxy']={'http': 'http://choozmo:Chuz83102968@172.104.67.159:8080'} print(options) # options = { # 'proxy': { # 'http': 'http://choozmo:Chuz83102968@172.105.205.52:8080' # 'http': 'http://choozmo:Chuz83102968@139.144.120.184:8080' # 'http': 'http://choozmo:Chuz83102968@172.104.92.245:8080' # 'http': 'http://choozmo:Chuz83102968@172.104.67.159:8080' # } # } c_options = webdriver.ChromeOptions() c_options.add_argument("--no-sandbox") c_options.add_argument("--headless") c_options.add_argument("--incognito") db = dataset.connect('postgresql://postgres:eyJhbGciOiJI@172.105.241.163:5432/postgres') mobile_emulation = { "deviceMetrics": { "width": 360, "height": 640, "pixelRatio": 3.0 }, "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19" } try: if rnd: driver = webdriver.Chrome(seleniumwire_options=options,options=c_options) else: driver = webdriver.Chrome(options=c_options) except: traceback.print_exc() #kw='真理大學國際生' #domain='cia.au.edu.tw' if custname is None: custname='真理' cursor=db.query("SELECT cust,plan,prefix,domain,kw,positive FROM public.seo_jobs where cust='"+custname+"' order by random() limit 1") kw=None domain=None for c in cursor: cust=c['cust'] kw=c['kw'] plan=c['plan'] prefix=c['prefix'] domain=eval(c['domain'])[0] positive=eval(c['positive']) break #kw='真理大學教堂' #domain='udn.com' print(kw) print(domain) #kw='真理大學校友' #kw='真理大學國際生' #kw='真理大學張聰聯' #domain='au.edu.tw' #domain='pronews.tw' driver.get('https://www.google.com?num=100') time.sleep(3) print(driver.current_url) elmt = driver.find_element(By.XPATH, "//textarea[@name='q']") time.sleep(1) elmt.send_keys(kw) elmt.send_keys(Keys.ENTER) time.sleep(4) elmts = driver.find_elements(By.XPATH, "//a[@jsname='UWckNb']") numresults=len(elmts) print('搜尋結果數量',numresults) if numresults<=0: print(elmts) for elmt in elmts: href=elmt.get_attribute('href') txt=elmt.text # print(txt) # print(href) if domain in href: webdriver.ActionChains(driver).move_to_element(elmt).perform() webdriver.ActionChains(driver).move_to_element(elmt).click().perform() print(domain) print(href) driver.quit() return txt break return '{empty}' # time.sleep(5) selenium_jared_click()