|
@@ -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()
|