Функция перевода страниц не работает должным образом в Python с использованием сценария автоматизации Selenium. ⇐ Python

Программы на Python
Anonymous
Функция перевода страниц не работает должным образом в Python с использованием сценария автоматизации Selenium.

Сообщение Anonymous »

Описание проблемы:

Я пытаюсь автоматизировать процесс, при котором я могу посетить веб-сайт, наведя указатель мыши на навигацию по меню. и нажмите на каждую опцию категории навигации в раскрывающемся списке уровня 1, посетите эту страницу, соберите подробную информацию о 20 лучших продуктах на этой странице и поместите ее в файл Excel. Если на этой странице нет какого-либо продукта, скрипт продолжит прокручиваться вниз, пока не достигнет конца страницы, и если элемент Product-div не найден, он вернется в начало страницы и щелкнет следующую категорию в списке. панель навигации

Определения функций:

< Функцияstrong>scroll_and_click_view_more предназначена для прокрутки страницы вниз, функция prod_vitals предназначена для сбора сведений о продукте, специфичных для каждой страницы, а функция prod_count предназначена для извлечения общего количества товары на каждой странице и создание сводки по всем страницам.

Описание ошибки:
< blockquote>
Поскольку веб-сайт создан на японском языке, я хочу перевести каждую страницу, когда я ее открываю, на английский язык, а затем выполнить очистку. Я написал функцию translate_page для перевода страницы и вызываю эту функцию каждый раз, когда открываю новую страницу из своей функции очистки. Код работает нормально, как и ожидалось, единственная проблема в том, что я по-прежнему получаю все результаты на японском языке, а не на английском.

Снимок экрана мой результат в файле Excel ниже. Все названия вкладок навигации и названия продуктов указаны на японском языке. Я хочу, чтобы они были переведены на английский язык перед удалением с веб-сайта
Изображение

Ниже прикрепляю класс WebScraper, где я написал функцию для перевода. Для ясности я удалил остальные определения функций. При необходимости добавим их позже.
class WebScraper:
def __init__(self):
self.url = "https://staging1-japan.coach.com/?auto=true"
#self.driver = webdriver.Chrome()
#options = Options()
#options.add_argument("--lang=en")
#self.driver = webdriver.Chrome(service=Service(r"c:\Users\DELL\Documents\Self_Project\chromedriver.exe"), options=options)
options = Options()
options.add_argument("--remote-debugging-port=9222")
self.driver = webdriver.Chrome(service=Service(r"c:\Users\DELL\Documents\Self_Project\chromedriver.exe"), options=options)
def translate_page(self):
script = """
var meta = document.createElement('meta');
meta.name = 'google';
meta.content = 'notranslate';
document.getElementsByTagName('head')[0].appendChild(meta);
"""
self.driver.execute_script(script)
self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
"source": """
Object.defineProperty(navigator, 'languages', {
get: function() { return ['en-US', 'en']; }
});
"""
})
def scrape(self):
self.driver.get(self.url)
#self.driver.maximize_window()
time.sleep(5)
nav_count = 0
mainWindow = self.driver.window_handles[0]
while True:
try:
self.driver.switch_to.window(mainWindow)
self.driver.execute_script("window.scrollBy(0, 100);")
soup = BeautifulSoup(self.driver.page_source, 'html.parser') # Refresh the page source and parse it
links = soup.find('div', {'class': 'css-wnawyw'}).find_all('a', {'class': 'css-ipxypz'})
hrefs = [link.get('href') for link in links]
if nav_count < len(hrefs): # Check if nav_count is within the range of hrefs
href = hrefs[nav_count]
time.sleep(2)
element1 = WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, f'a[href="{href}"]')))
self.driver.execute_script("window.scrollTo(0, arguments[0].getBoundingClientRect().top + window.scrollY - 100);", element1)
time.sleep(5)
self.driver.execute_script(f"window.open('{href}', '_blank');")
time.sleep(3)
newTab = self.driver.window_handles[-1]
self.driver.switch_to.window(newTab)
time.sleep(3)
self.translate_page() # Translate the new page
response = scroll_and_click_view_more(self.driver, href)
time.sleep(3)
if response != "No product tiles found" and response != "Reached the end of the page.":
soup = BeautifulSoup(response, 'html.parser')
PLP_title = links[nav_count].get('title')
prod_vitals(soup, PLP_title, self.url)
time.sleep(5)
prod_count(soup, PLP_title)
self.driver.execute_script("window.scrollBy(0, -500);")
time.sleep(2)
else:
self.driver.execute_script("window.scrollTo(0,0);")
time.sleep(3)
self.driver.close()
continue
else:
break
except TimeoutException:
print(f"Element with href {href} not clickable")
self.driver.save_screenshot('timeout_exception.png')
except Exception as e:
print(f"An error occurred: {e}")
finally:
nav_count += 1
self.driver.close()
scraper = WebScraper()
scraper.scrape()
time.sleep(5)
scraper.driver.quit()


Подробнее здесь: https://stackoverflow.com/questions/790 ... nium-autom

Вернуться в «Python»