2016-01-18 6 views
0

Я пытаюсь очистить некоторые данные от TripAdvisor и использовать Selenium с привязкой Python, чтобы сделать это.Невозможно выполнить onClick javascript selenium - python

Объекты обзора на веб-странице иногда имеют кнопку «Подробнее» внизу, чтобы отобразить полный обзорный контент при нажатии на него. Это фактически элемент span с функцией onlclick JS, написанной для него.

Что я хочу достичь, это загрузить страницу, найти ссылки «Больше» и щелкнуть их так, чтобы веб-страница затем загрузила полностью просмотренные просмотры перед началом операций очистки.

До сих пор я пробовал следующий код без везения. Кажется, я не понимаю ошибки, показанные в трассировке стека.

import os 
import time 
from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://www.tripadvisor.ca/Attraction_Review-g304138-d317476-Reviews-Temple_of_the_Tooth_Sri_Dalada_Maligawa-Kandy_Central_Province.html#REVIEWS"); 

more = []; 
more = driver.find_elements_by_class_name('moreLink') 
print(len(more)); 
for x in range(0,len(more)): 
    if more[x].is_displayed(): 
     more[x].click(); 
     print("clicked"); 

Это журналы ошибок, которые я получаю в консоли.

3 

Traceback (most recent call last): 
    File "C:\Users\**\workspace\ReviewScraper\src\scraper\test3.py", line 13, in <module> 
    more[x].click(); 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 75, in click 
    self._execute(Command.CLICK_ELEMENT) 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 454, in _execute 
    return self._parent.execute(command, params) 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute 
    self.error_handler.check_response(response) 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 102, in check_response 
    value = json.loads(value_json) 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 319, in loads 
    return _default_decoder.decode(s) 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 339, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Users\**\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 357, in raw_decode 
    raise JSONDecodeError("Expecting value", s, err.value) from None 
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

Любая помощь очень ценится.

ответ

0

Мне удалось это сделать, вернувшись обратно в Selenium 1.48.0, и, войдя в TA, прежде чем очищать отзывы, каждый раз. После входа в систему вы можете нажать кнопку «Больше» и легко просмотреть полные обзоры.

Смежные вопросы