clickbot_100_one.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import random
  2. import sys
  3. import dataset
  4. from selenium import webdriver
  5. from selenium.webdriver.chrome.service import Service
  6. from selenium.webdriver.common.by import By
  7. import traceback
  8. import datetime
  9. import codecs
  10. import time
  11. import urllib
  12. import argparse
  13. import logging
  14. import sys
  15. from logging.handlers import SysLogHandler
  16. import socket
  17. import pandas as pd
  18. import socket
  19. import os
  20. import dataset
  21. import pymysql
  22. pymysql.install_as_MySQLdb()
  23. driver = None
  24. def restart_browser():
  25. global driver
  26. user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
  27. s = Service('C:\/Users\/s1301\/Downloads\/chromedriver_116\/chromedriver-win32\/chromedriver')
  28. options = webdriver.ChromeOptions()
  29. options.add_argument('--headless')
  30. # options.add_argument('--remote-debugging-port=9222')
  31. # options.add_experimental_option("debuggerAddress", "192.168.192.45:9922")
  32. options.add_argument("--user-agent=" + user_agent)
  33. # options.add_argument("--incognito")
  34. # options.add_argument('--proxy-server=socks5://172.104.93.163:41800')
  35. driver = webdriver.Chrome(options=options, service=s)
  36. str1 = driver.capabilities['browserVersion']
  37. driver.delete_all_cookies()
  38. driver.set_window_size(1400, 20000)
  39. return driver
  40. def process_one():
  41. # lst=['信義房屋','信義 房屋','信義房仲','信義 房仲']
  42. # lst=["親子育兒交流 奶爸","產後瘦身益生菌","產後瘦身推薦"]
  43. lst=['雙響泡','双響泡','雙響砲']
  44. # lst = ['小羊水果']
  45. # lst = ['巨力搬家']
  46. # lst = ['台中搬家推薦','桃園搬家推薦','新竹搬家推薦']
  47. # lst = ['地面課程','出國學飛','自訓學飛']
  48. # lst = ['台北牙周病醫生推薦 ','微創水雷射','水雷射牙周病']
  49. # lst = ['地面課程','出國學飛','自訓學飛']
  50. # lst = ['樂活眼鏡評價','樂活眼鏡']
  51. # lst = ['新竹搬家推薦','台中搬家推薦','桃園搬家推薦']
  52. # lst = ['芙樂思蜂王漿乳霜','蜂王漿乳霜']
  53. # lst = ['涼夏清爽','夏季口罩','石墨烯','透氣 口罩','夏天口罩推薦','夏天立體口罩']
  54. # lst = ['啟翔輕金屬','啟翔','陳百欽']
  55. date='0907'
  56. for term in lst:
  57. driver=restart_browser()
  58. escaped_search_term=urllib.parse.quote(term)
  59. googleurl = 'https://www.google.com/search?q={}&num={}&hl={}&gl=tw'.format(escaped_search_term, 100,'zh-TW')
  60. # googleurl='https://www.google.com/search?q=%E9%9B%99%E9%9F%BF%E7%A0%B2&num=100&rlz=1C1ONGR_zh-TWTW1033TW1033&oq=%E9%9B%99%E9%9F%BF%E7%A0%B2&aqs=chrome..69i57j69i61.414j0j1&sourceid=chrome&ie=UTF-8#ip=1&gl=tw&hl=zh-TW'
  61. driver.get(googleurl)
  62. time.sleep(6)
  63. print(driver.current_url)
  64. driver.save_screenshot('C:\/Users\/s1301\/OneDrive\/Pictures\/Saved Pictures\/'+date+term+'.png')
  65. df=pd.DataFrame()
  66. elmts=driver.find_elements(By.XPATH,"//div[@class='yuRUbf']//a")
  67. print(len(elmts))
  68. cnt=1
  69. datadict={'搜尋詞':[],'結果標題':[],'結果網址':[],'結果名次':[]}
  70. for elmt in elmts:
  71. try:
  72. href=elmt.get_attribute('href')
  73. datadict['搜尋詞'].append(term)
  74. datadict['結果標題'].append(elmt.text)
  75. datadict['結果網址'].append(href)
  76. datadict['結果名次'].append(str(cnt))
  77. cnt+=1
  78. except:
  79. print('href2 exception')
  80. traceback.print_exc()
  81. if len(datadict['結果標題'])<=0:
  82. print('None')
  83. driver.quit()
  84. sys.exit()
  85. df['搜尋詞']=datadict['搜尋詞']
  86. df['結果標題']=datadict['結果標題']
  87. df['結果網址']=datadict['結果網址']
  88. df['結果名次']=datadict['結果名次']
  89. df.to_excel('C:\/Users\/s1301\/OneDrive\/Pictures\/Saved Pictures\/'+date+term+".xls")
  90. driver.quit()
  91. print('等待')
  92. time.sleep(random.randint(100,120))
  93. process_one()