Wunoodles 3 gadi atpakaļ
vecāks
revīzija
5a80dd8fa7
1 mainītis faili ar 19 papildinājumiem un 16 dzēšanām
  1. 19 16
      run.py

+ 19 - 16
run.py

@@ -479,7 +479,7 @@ def serive_create_linux(profilepath):
     return driver
 
 
-def find_lon_lat():
+def find_lon_lat(driver):
     e = driver.find_element_by_css_selector("#scene > div.widget-scene > canvas")
     size = e.size
     total_height = size['height']
@@ -487,10 +487,11 @@ def find_lon_lat():
 
     size2 = driver.find_element_by_css_selector("#pane > div.Yr7JMd-pane").size
     left_width = size2['width']
-
+    print(total_height, total_width, left_width)
     x = (total_width - left_width) / 2 + left_width
     y = total_height / 2
 
+    e = driver.find_element_by_css_selector("#pane > div.Yr7JMd-pane")
     action = webdriver.common.action_chains.ActionChains(driver)
     action.move_to_element_with_offset(e, x, y)
     action.context_click()
@@ -503,14 +504,17 @@ def find_lon_lat():
     return float(lat), float(lon)
 
 
-def get_unique_id():
+def get_unique_id(driver):
     element = driver.find_element(By.CSS_SELECTOR, "button[data-value='分享']")
     driver.implicitly_wait(5)
     ActionChains(driver).move_to_element(element).click(element).perform()
-    ele = driver.find_element(By.CSS_SELECTOR, "input")
-    short_url = ele.get_attribute('value')
-    unique_id = short_url.split('/')[-1]
-
+    time.sleep(0.5)
+    for i in range(3):
+        ele = driver.find_element(By.CSS_SELECTOR, "input")
+        short_url = ele.get_attribute('value')
+        unique_id = short_url.split('/')[-1]
+        if unique_id != '':
+            break
     element = driver.find_element(By.CSS_SELECTOR, "button[aria-label='關閉']")
     driver.implicitly_wait(5)
     ActionChains(driver).move_to_element(element).click(element).perform()
@@ -548,11 +552,12 @@ def main():
     if len(sys.argv) > 1 :
         port=int(sys.argv[1])
         print('restart docker p{}'.format(port))
-        os.system('sudo docker container restart pp'+str(port))
+        os.system('sudo docker container restart p'+str(port))
         time.sleep(8)
 
     for i in range(5):
         keyword = get_new_keyword(db2)
+        table2.insert({'kw':keyword,'num':0})
         url_pd = get_not_cralwer_url(keyword)
         print('drvier start {}...'.format(keyword))
         driver = brower_start(port)
@@ -565,12 +570,12 @@ def main():
                 name = row['name']
                 item_url = row['item_url']
                 print(key, name, ': ' ,item_url)
-
+    
                 print('start...')
                 driver.get(item_url)
                 page_down_(driver, "//div[@class='x3AX1-LfntMc-header-title-ij8cu']", 3)
-                lat, lon = find_lon_lat()
-                unique_id = get_unique_id()
+                lat, lon = find_lon_lat(driver)
+                unique_id = get_unique_id(driver)
                 time_status = time_click(driver)
                 if time_status == 'error':
                     error_table_col = ['name', 'lon', 'lat', 'keyword', 'item_url', 'crawler_date']
@@ -583,9 +588,9 @@ def main():
                     'name': blank_check(shop_soup.find('h1', class_='x3AX1-LfntMc-header-title-title').text),
                     'lon': lon,
                     'lat': lat,
-                    'unique_id': unique_id
+                    'unique_id': unique_id.replace('?share','')
                 }
-                print(output['name'], lon, lat)
+                print(output['name'], lon, lat, unique_id)
 
                 print('get_shop_info')
                 output = get_shop_info(driver, output, shop_soup)
@@ -628,8 +633,6 @@ def main():
                 data_select_insert(db, 'error_list2', error_table_col, row)
                 time.sleep(1)
 
-        table2.insert({'kw':keyword,'num':key})
- 
-
+        
 if __name__ == '__main__':
     main()