fast_1999.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #import redis
  2. import time
  3. import traceback
  4. #import json
  5. from selenium import webdriver
  6. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  7. import time
  8. import os
  9. import urllib.parse
  10. from selenium.webdriver.support.ui import WebDriverWait
  11. from selenium.webdriver.common.by import By
  12. from selenium.webdriver.support import expected_conditions as EC
  13. from userAgentRandomizer import userAgents
  14. from selenium.webdriver.chrome.options import Options
  15. import codecs
  16. import random
  17. import requests
  18. import time
  19. import sys
  20. import docker
  21. import codecs
  22. import random
  23. import os
  24. import time
  25. import dataset
  26. driver=None
  27. headers = {
  28. "Authorization": "Bearer " + "t35vhZtWNgvDNWHc3DJh0OKll3mcB9GvC8K2EAkBug2",
  29. "Content-Type": "application/x-www-form-urlencoded"
  30. }
  31. def send_msg(kw):
  32. params = {"message": "處理關鍵字: "+kw}
  33. r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params)
  34. def empty_query(q):
  35. global driver
  36. googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
  37. driver.get(googleurl)
  38. time.sleep(3)
  39. def process_query(qs):
  40. q=qs[0]
  41. domain=qs[2]
  42. cnt=qs[1]
  43. global driver
  44. googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
  45. driver.get(googleurl)
  46. time.sleep(3)
  47. if cnt > 0:
  48. for i in range(cnt):
  49. elmt=driver.find_element_by_xpath("//a[@id='pnnext']")
  50. webdriver.ActionChains(driver).move_to_element(elmt).perform()
  51. webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
  52. time.sleep(3)
  53. elmts=driver.find_elements_by_xpath("//div[@class='g']//div[@class='yuRUbf']//a")
  54. idx=1
  55. ranking=-1
  56. for elmt in elmts:
  57. href=elmt.get_attribute('href')
  58. txt=elmt.text
  59. if len(txt)>10:
  60. # if 'hhh.com.tw' in href:
  61. # if 'hhh.com.tw' in href:
  62. # if 'ai.choozmo.com' in href:
  63. if domain in href:
  64. # if 'searchome.net' in href:
  65. webdriver.ActionChains(driver).move_to_element(elmt).perform()
  66. webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
  67. break
  68. def re_get_webdriver():
  69. global driver
  70. global portnum
  71. result=[]
  72. # client = docker.from_env()
  73. # ls=client.containers.list()
  74. # print(ls)
  75. # for l in ls:
  76. # if 'p17777' in l.name:
  77. # ls[0].restart()
  78. time.sleep(4)
  79. if driver is not None:
  80. print('closing....')
  81. driver.quit()
  82. os.system('docker container restart p'+portnum)
  83. time.sleep(10)
  84. # options = webdriver.EdgeOptions()
  85. try:
  86. ua = userAgents()
  87. user_agent = ua.random()
  88. # options = webdriver.ChromeOptions()
  89. options = Options()
  90. # options.add_argument("--headless") # 視窗背後執行
  91. print(user_agent)
  92. options.add_argument("--user-agent=" +user_agent)
  93. options.add_argument("--incognito")
  94. driver = webdriver.Remote(
  95. command_executor='http://127.0.0.1:'+str(portnum)+'/wd/hub',
  96. options=options
  97. # desired_capabilities=options.to_capabilities(),
  98. )
  99. driver.delete_all_cookies()
  100. driver.set_window_size(1400,1000)
  101. return
  102. except:
  103. import traceback
  104. traceback.print_exc()
  105. driver=None
  106. return None
  107. driver=None
  108. def run_once(url):
  109. global driver
  110. i=random.randint(0,5)
  111. if i==0 or driver is None:
  112. # if True:
  113. time.sleep(15)
  114. re_get_webdriver()
  115. if driver is None:
  116. return
  117. try:
  118. driver.execute_script('window.open("'+url+'","_blank");')
  119. driver.execute_script("window.scrollTo(0, window.scrollY + 400)")
  120. time.sleep(0.5)
  121. except:
  122. print('exception')
  123. #client = docker.from_env()
  124. #ls=client.containers.list()
  125. #print(ls)
  126. #for l in ls:
  127. # if 'p18888' in l.name:
  128. # ls[0].restart()
  129. #time.sleep(4)
  130. portnum=sys.argv[1]
  131. os.system('docker restart p'+str(portnum))
  132. time.sleep(4)
  133. lst=[]
  134. db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
  135. cursor=db.query('SELECT * FROM columnids order by rand()')
  136. for c in cursor:
  137. lst.append('https://www.hhh.com.tw/columns/detail/'+str(c['cid'])+'/')
  138. #lst=['https://www.hhh.com.tw/columns/detail/3427/index.php']
  139. #for i in range(20):
  140. while True:
  141. l=random.choice(lst)
  142. print(l)
  143. # driver.get(l)
  144. run_once(l)
  145. # time.sleep(2)