Forráskód Böngészése

Merge branch 'master' of http://git.choozmo.com:3000/choozmo/kw_tools

root 2 éve
szülő
commit
5bb950ded3

+ 5 - 3
SEO/news_clickbot.py

@@ -53,10 +53,12 @@ def restart_browser(pport):
 
 def process_one(pport):
     db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
-    lst = ['好睡王 引新聞','好睡王 Yahoo','好睡王 HiNet','好睡王 PCHOME','好睡王 蕃新聞','好睡王 新浪','好睡王 台北郵報','好睡王 LIFE.tw','好睡王 match生活網','好睡王炎炎夏日 POPDAILY','好睡王 LINE TODAY']
+    lst = []
     table = db['news_log']
-
-    for term in lst[7::]:
+    cursor = db.query("select * from seo.news_kw")
+    for c in cursor:
+        lst.append([c['term']])
+    for term in lst:
         print(term)
         logger.debug('[clickbot_100][' + term + ']')
         driver = restart_browser(pport)

+ 100 - 0
choozmo/ads_csv_gdn.py

@@ -0,0 +1,100 @@
+import csv
+import sys
+import codecs
+import pandas as pd
+
+with codecs.open('/Users/zooeytsai/Documents/220628有夠讚GDN.csv', 'r', 'utf-16') as csvfile:
+    spamreader = csv.reader(csvfile, delimiter='\t', quotechar='|')
+    # df = pd.read_csv('/Users/zooeytsai/Documents/220628有夠讚GDN.csv', encoding='utf16')
+    kwdict = {}
+    addict = {}
+    d = {}
+    head = True
+    for row in spamreader:
+        # print(row)
+        if head:
+            head = False
+            continue
+        ll = len(row)
+        campaign = row[0]
+        adgroup = row[19]
+        # print(adgroup)
+        kw = row[47]
+
+        # if len(kw) > 0:
+            # print(campaign)
+            # print(adgroup)
+        if kwdict.get(adgroup) is None:
+            kwdict[adgroup] = []
+        if addict.get(adgroup) is None:
+            addict[adgroup] = []
+        if d.get(adgroup) is None:
+            d[adgroup] = []
+        kwdict[adgroup].append(kw)
+
+        for i in range(59, 65): #加了Long headline
+            hline = row[i]
+            # print(hline)
+            if len(hline) > 0:
+                print(addict[adgroup])
+                addict[adgroup].append(hline)
+        for i in range(65, 67):
+            hline = row[i]
+            # print(i, hline)
+            if len(hline) > 0:
+                d[adgroup].append(hline)
+        # print(addict)
+fw = codecs.open('/Users/zooeytsai/Documents/有夠讚GDN廣告datastudio.csv', 'w', 'utf-8')
+fw.write("活動,群組,關鍵字,廣告標題,廣告內容")
+for k, v in kwdict.items():
+    kwlen = len(v)
+    adlen = len(addict[k])
+    totlen = max(kwlen, adlen)
+    for i in range(totlen):
+        print(campaign)
+        try:
+            kw = v[i]
+        except:
+            kw = ' '
+        try:
+            ad = addict[k][i]
+            # print(ad)
+        except:
+            ad = ' '
+        try:
+            ad1 = d[k][i]
+            # print(ad)
+        except:
+            ad1 = ' '
+        data = "\n" + campaign + "," + k + "," + kw + "," + ad + "," + ad1
+        fw.write(data)
+
+fw.close()
+
+#    for k,v in addict.items():
+#        print('rectangle '+k+'_ad'+' {')
+#        print('card '+k+'廣告'+' [')
+
+#        for itm in v:
+#            print(itm)
+#        print(']')
+#        print('}')
+
+
+#        print(campaign+' -[#black]-> '+k+'_ad')
+
+
+#    print(kwdict)
+#    print(addict)
+
+
+#    for row in spamreader:
+#        ll=len(row)
+#
+#        for i in range(ll):
+#            print(i)
+#            print(row[i])
+#        break
+
+#
+#    sys.exit()

+ 96 - 0
choozmo/ads_csv_local.py

@@ -0,0 +1,96 @@
+import csv
+import sys
+import codecs
+import pandas as pd
+
+with codecs.open('/Users/zooeytsai/Documents/220704有夠讚地標廣告.csv', 'r', 'utf-16') as csvfile:
+    spamreader = csv.reader(csvfile, delimiter='\t', quotechar='|')
+    # df = pd.read_csv('/Users/zooeytsai/Documents/220628有夠讚GDN.csv', encoding='utf16')
+    kwdict = {}
+    addict = {}
+    campagindict = {}
+    d = {}
+    head = True
+    for row in spamreader:
+        # print(row)
+        if head:
+            head = False
+            continue
+        ll = len(row)
+        campaign = row[0]
+        adgroup = row[18]
+        # print(adgroup)
+        # print(adgroup)
+        # kw = row[47]
+
+        # if len(kw) > 0:
+            # print(campaign)
+            # print(adgroup)
+        if kwdict.get(adgroup) is None:
+            kwdict[adgroup] = []
+        if addict.get(adgroup) is None:
+            addict[adgroup] = []
+        if d.get(adgroup) is None:
+            d[adgroup] = []
+        # kwdict[adgroup].append(kw)
+
+        for i in range(54, 59): #headline
+            hline = row[i]
+            # print(hline)
+            if len(hline) > 0:
+                # print(addict[adgroup])
+                addict[adgroup].append(hline)
+        for i in range(59, 64): #Description
+            hline = row[i]
+            # print(i, hline)
+            if len(hline) > 0:
+                d[adgroup].append(hline)
+    # print(addict)
+fw = codecs.open('/Users/zooeytsai/Documents/有夠讚地標廣告datastudio.csv', 'w', 'utf-8')
+fw.write("群組,廣告標題,廣告內容")
+
+
+for k,v in addict.items():
+    for i in range(len(v)):
+        try:
+            ad = addict[k][i]
+            # print(ad)
+        except:
+            ad = ' '
+        try:
+            ad1 = d[k][i]
+            print(ad1)
+        except:
+            ad1 = ' '
+        data = "\n" + k + "," + ad + "," + ad1
+        fw.write(data)
+
+fw.close()
+
+#    for k,v in addict.items():
+#        print('rectangle '+k+'_ad'+' {')
+#        print('card '+k+'廣告'+' [')
+
+#        for itm in v:
+#            print(itm)
+#        print(']')
+#        print('}')
+
+
+#        print(campaign+' -[#black]-> '+k+'_ad')
+
+
+#    print(kwdict)
+#    print(addict)
+
+
+#    for row in spamreader:
+#        ll=len(row)
+#
+#        for i in range(ll):
+#            print(i)
+#            print(row[i])
+#        break
+
+#
+#    sys.exit()

+ 132 - 0
website_clickjobs/bennisclickjob.py

@@ -0,0 +1,132 @@
+import time
+from datetime import datetime
+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
+import codecs
+import random
+import requests
+import dataset
+import traceback
+import sys
+from selenium.webdriver.common.keys import Keys
+
+target_domain=['bennis.com.tw']
+brands={'bennis.com.tw':'班尼斯'}
+
+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():
+    q="班尼斯"
+    domain="bennis.com.tw"
+    global driver
+    driver.get('https://www.google.com?num=100')
+    time.sleep(3)
+    print(driver.current_url)
+
+    # elmts=driver.find_elements_by_xpath("//div[@class='yuRUbf']/a")
+    # ABOVE METHOD IS DEPRECATED STARTING SELENIUM 4.3.0, USE THIS
+    #
+    elmt = driver.find_element(By.XPATH, "//input[@name='q']")
+    time.sleep(1)
+
+    elmt.send_keys(q)
+    elmt.send_keys(Keys.ENTER)
+
+    idx=1
+    ranking=-1
+    domain_in_link = 0
+
+    googleurl = driver.current_url
+    print(driver.current_url)
+
+    elmts=driver.find_elements("xpath","//div[@class='yuRUbf']/a")
+
+    print (len(elmts))
+    # driver.save_screenshot('c:/tmp/test.png')
+
+    for el in elmts:
+        href=el.get_attribute('href')
+        txt=el.text
+        if len(txt)>10:
+            if domain in href:
+                domain_in_link += 1
+                print('clicked....')
+                print(href)
+                print(txt)
+                webdriver.ActionChains(driver).move_to_element(el).perform()
+                webdriver.ActionChains(driver).move_to_element(el).click().perform()
+                time.sleep(6)
+
+                if domain in target_domain:
+                    print("Target link found")
+                    time_stamp = datetime.fromtimestamp(time.time())
+                    time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
+                    db['click_results'].insert({"time_stamp": time_stamp, "brand": brands[domain], "domain": domain, "query": q, "url": href, "content": txt})
+                break
+
+    if domain in target_domain:
+        print("Target domain found")
+        time_stamp = datetime.fromtimestamp(time.time())
+        time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
+        db['query_results'].insert({"time_stamp": time_stamp, "brand": brands[domain], "domain": domain, "query": q, "googleurl": googleurl, "element_count": len(elmts), "domain_in_link_count": domain_in_link})
+            
+
+    print(domain_in_link)
+    
+
+def run_once():
+    global driver
+    result=[]
+    options = webdriver.ChromeOptions()
+    options.add_argument('--headless')
+#    options.add_argument("--user-agent=" +user_agent)
+    options.add_argument("--incognito")
+    options.add_argument('--no-sandbox')
+    options.add_argument('--disable-dev-shm-usage')
+
+    driver = webdriver.Chrome(
+    options=options)
+
+    driver.delete_all_cookies()
+    driver.set_window_size(1400,1000)
+
+    process_query()
+    time.sleep(3)
+    driver.quit()
+
+#execution starts here
+db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
+
+while True:
+    try:
+        run_once()
+    except:
+        traceback.print_exc()
+    sleepint=random.randint(35,50)
+    print("Completed (" + str(sleepint) + ")")
+    time.sleep(sleepint)