seo_designer_worker.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from selenium import webdriver
  2. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  3. import time
  4. import os
  5. import urllib.parse
  6. from selenium.webdriver.support.ui import WebDriverWait
  7. from selenium.webdriver.common.by import By
  8. from selenium.webdriver.support import expected_conditions as EC
  9. import codecs
  10. import random
  11. from bs4 import BeautifulSoup
  12. import requests
  13. import time
  14. import redis
  15. import time
  16. headers = {
  17. "Authorization": "Bearer " + "t35vhZtWNgvDNWHc3DJh0OKll3mcB9GvC8K2EAkBug2",
  18. "Content-Type": "application/x-www-form-urlencoded"
  19. }
  20. def send_msg(kw):
  21. params = {"message": "處理關鍵字: "+kw}
  22. r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params)
  23. def empty_query(q):
  24. global driver
  25. googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
  26. driver.get(googleurl)
  27. time.sleep(3)
  28. def process_query(q):
  29. global driver
  30. googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
  31. driver.get(googleurl)
  32. time.sleep(3)
  33. elmts=driver.find_elements_by_xpath("//div[@class='g']//div[@class='yuRUbf']//a")
  34. idx=1
  35. ranking=-1
  36. for elmt in elmts:
  37. href=elmt.get_attribute('href')
  38. txt=elmt.text
  39. if len(txt)>10:
  40. # if 'hhh.com.tw' in href:
  41. if 'hhh.com.tw' in href:
  42. # if 'searchome.net' in href:
  43. webdriver.ActionChains(driver).move_to_element(elmt).perform()
  44. webdriver.ActionChains(driver).move_to_element(elmt).click().perform()
  45. break
  46. # fw=codecs.open('c:/tmp/gg.html','w','utf-8')
  47. # fw.write(driver.page_source)
  48. # fw.close()
  49. # driver.save_screenshot("c:/tmp/screen.png")
  50. # os.startfile("c:/tmp/screen.png")
  51. # driver.quit()
  52. #qlist=['上築空間設計','豐聚室內裝修','富億空間設計','浩室設計','京璽國際','IS國際設計','優尼客','摩登雅舍','亞維空間設計','比沙列','富億設計','豐聚設計']
  53. #qlist=['IS國際設計']
  54. #qlist=['YHS DESIGN','齊舍設計','奧立佛竺居','阿曼空間設計','界陽大司室內設計','尚藝室內裝修','禾禾設計','上陽設計','苡希創意設計','羽筑空間設計','將作空間']
  55. #qlist=['富億空間','幸福空間節目 富億','幸福空間設計師 富億','幸福空間 富億','幸福空間 fe設計','老屋 富億','老屋翻新 富億','天井設計案例 富億','IS國際設計','豐聚設計','浩室設計','優尼客','摩登雅舍','亞維空間設計','比沙列','京璽國際','上築空間設計']
  56. #qlist+=['合砌設計','羽筑空間設計','朱英凱室內設計','將作空間','藝谷空間','文儀室內裝修','維耕設計','亞維空間設計','比沙列','上築空間設計','京璽國際','IS國際設計','優尼客','摩登雅舍','玖柞設計','麻石設計','元典設計','大琚空間','惹雅國際','橙果創意','PLSB建境','聯寬室內裝修']
  57. #qlist+=['合砌設計','羽筑空間設計','朱英凱室內設計','將作空間','藝谷空間','文儀室內裝修','維耕設計','亞維空間設計','比沙列','上築空間設計','京璽國際','IS國際設計','優尼客','摩登雅舍','玖柞設計','麻石設計','元典設計','大琚空間','惹雅國際','橙果創意','PLSB建境','聯寬室內裝修']
  58. #qlist+=['卓林室內設計','成綺空間設計','德本迪設計','昱森室內設計','千綵胤空間設計','上築空間設計']
  59. #qlist+=['IS 國際設計','IS國際設計','IS設計 陳嘉鴻''IS設計 費用','陳嘉鴻 mobile01','IS國際設計 風格','IS國際設計 接案風格','IS國際設計 現代風','IS國際設計 老屋翻新']
  60. #qlist+=['奧立佛 設計師 鍾鼎','奧立佛 老屋翻新','奧立佛 住宅改造','奧立佛 監工費','奧立佛 設計 鍾黎']
  61. #qlist=['富億空間設計','富億空間設計 新成屋','富億空間設計 新成屋','富億空間設計 老屋翻新','富億空間設計 陳錦樹','富億空間設計 設計師','富億空間設計 室內設計','富億空間設計 室內設計師']
  62. #qlist+=['富億空間 新成屋','富億空間 新成屋','老屋翻新','富億空間 陳錦樹','富億空間 設計師','富億空間 室內設計']
  63. #qlist+=['界陽室內設計','界陽大司室內設計','界陽x大司','界陽大司 馬健凱設計師','界陽大司 設計師','界陽大司 設計風格']
  64. #qlist+=['卓林室內設計','卓林設計 林繹寬','卓林設計 設計師','卓林設計 機能宅','卓林設計 室內設計','卓林 室內設計','卓林設計 坪效','卓林設計 空間設計']
  65. #qlist+=['德本迪 宜荷','德本迪 室內設計','德本迪 裝修','德本迪 宋雯鈴','德本迪 宋志鍾','德本迪 室內設計諮詢','德本迪 系統家具']
  66. #接案風格:現代風/古典風/休閒風/低調奢華/新古典。接案類型:小坪數/標準格局/別墅/大坪數/老屋翻新/樓中樓/實品/樣品屋/商業空間/挑高樓層。老屋翻新欲了解陳嘉鴻設計師價格? 到幸福空間看更多PTT、mobile01版友好評推薦的 is國際設計-陳嘉鴻設計師計費及作品。
  67. #qlist=['建境 構建築','建境 plsb','建境 室內設計','建境 空間設計','plsb建境 專線','建境 專線']
  68. #qlist=['優尼客設計','優尼客設計 空間設計','優尼客設計 設計','優尼客設計 黃仲均','優尼客設計 室內設計師','優尼客設計 現代風','優尼客設計 北歐風','優尼客設計 工業風']
  69. #qlist=['界陽大司','界陽大司 空間設計','界陽大司 設計','界陽大司 馬健凱','界陽大司 室內設計師','界陽大司 案例','界陽大司 室內設計獎']
  70. #qlist=['安喆空間設計','安喆 空間設計','安喆空間設計 專線','安喆空間設計 陳佳暄','安喆空間設計 林威任','安喆空間設計 桃園','安喆空間設計 公司地址']
  71. #qlist=['德本迪設計','德本迪設計 宜荷','德本迪設計 室內設計','德本迪設計 裝修','德本迪設計 宋雯鈴','德本迪設計 宋志鍾','德本迪設計 室內設計諮詢','德本迪設計 系統家具']
  72. driver = webdriver.Remote(
  73. # command_executor='http://127.0.0.1:4444/wd/hub',
  74. #command_executor='http://192.53.174.202:4444/wd/hub',
  75. command_executor='http://dev2.choozmo.com:14444/wd/hub',
  76. desired_capabilities=DesiredCapabilities.CHROME)
  77. driver.set_window_size(1400,1000)
  78. r = redis.Redis(host='db.ptt.cx', port=6379, db=1)
  79. p = r.pubsub(ignore_subscribe_messages=True)
  80. p.subscribe('q_hhh_seo')
  81. while True:
  82. message = p.get_message()
  83. if message:
  84. q=message['data'].decode('utf-8')
  85. print(q)
  86. prob=random.randint(0,3)
  87. if prob ==0:
  88. print(q)
  89. process_query(q)
  90. send_msg(q)
  91. else:
  92. empty_query(q)
  93. intsleep=random.randint(5,10)
  94. time.sleep(intsleep)