#import redis import time import traceback #import json from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import time import os import urllib.parse from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from userAgentRandomizer import userAgents from selenium.webdriver.chrome.options import Options import codecs import random import requests import time import sys import docker import codecs import random import os import time import dataset driver=None headers = { "Authorization": "Bearer " + "t35vhZtWNgvDNWHc3DJh0OKll3mcB9GvC8K2EAkBug2", "Content-Type": "application/x-www-form-urlencoded" } def send_msg(kw): params = {"message": "處理關鍵字: "+kw} r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params) def empty_query(q): global driver googleurl='https://www.google.com/search?q='+urllib.parse.quote(q) driver.get(googleurl) time.sleep(3) def process_query(qs): q=qs[0] domain=qs[2] cnt=qs[1] global driver googleurl='https://www.google.com/search?q='+urllib.parse.quote(q) driver.get(googleurl) time.sleep(3) if cnt > 0: for i in range(cnt): elmt=driver.find_element_by_xpath("//a[@id='pnnext']") webdriver.ActionChains(driver).move_to_element(elmt).perform() webdriver.ActionChains(driver).move_to_element(elmt).click().perform() time.sleep(3) elmts=driver.find_elements_by_xpath("//div[@class='g']//div[@class='yuRUbf']//a") idx=1 ranking=-1 for elmt in elmts: href=elmt.get_attribute('href') txt=elmt.text if len(txt)>10: # if 'hhh.com.tw' in href: # if 'hhh.com.tw' in href: # if 'ai.choozmo.com' in href: if domain in href: # if 'searchome.net' in href: webdriver.ActionChains(driver).move_to_element(elmt).perform() webdriver.ActionChains(driver).move_to_element(elmt).click().perform() break def re_get_webdriver(): global driver global portnum result=[] # client = docker.from_env() # ls=client.containers.list() # print(ls) # for l in ls: # if 'p17777' in l.name: # ls[0].restart() # time.sleep(4) if driver is not None: print('closing....') driver.quit() os.system('docker container restart p'+portnum) time.sleep(11) # options = webdriver.EdgeOptions() try: ua = userAgents() user_agent = ua.random() # options = webdriver.ChromeOptions() options = Options() # options.add_argument("--headless") # 視窗背後執行 print(user_agent) options.add_argument("--user-agent=" +user_agent) driver = webdriver.Remote( command_executor='http://127.0.0.1:'+str(portnum)+'/wd/hub', options=options # desired_capabilities=options.to_capabilities(), ) driver.set_window_size(1400,1000) return except: import traceback traceback.print_exc() driver=None return None driver=None def run_once(url): global driver i=random.randint(0,9) if i==0 or driver is None: # if True: time.sleep(15) re_get_webdriver() if driver is None: return try: driver.execute_script('window.open("'+url+'","_blank");') driver.execute_script("window.scrollTo(0, window.scrollY + 400)") time.sleep(0.5) except: print('exception') #client = docker.from_env() #ls=client.containers.list() #print(ls) #for l in ls: # if 'p18888' in l.name: # ls[0].restart() #time.sleep(4) portnum=sys.argv[1] os.system('docker restart p'+str(portnum)) time.sleep(4) lst=[] db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4') cursor=db.query('SELECT * FROM columnids order by rand()') for c in cursor: lst.append('https://www.hhh.com.tw/columns/detail/'+str(c['cid'])+'/') #lst=['https://www.hhh.com.tw/columns/detail/3427/index.php'] #for i in range(20): while True: l=random.choice(lst) print(l) # driver.get(l) run_once(l) # time.sleep(2)