2017-02-16 8 views
2

У меня есть список фильмов, для которых я хочу получить обзоры от гнилого www.rottentomatoes.com, но у меня наголову.selenium и python3: выбор окна поиска на www.rottentomatoes.com

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

В настоящее время я не могу выйти за рамки поиска, потому что я не смог успешно найти окно поиска.

Мой код, как показано ниже:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
import time 

browser = webdriver.Chrome('/home/zona/chromedriver') 
url = 'https://www.rottentomatoes.com/' 
browser.get(url) 
time.sleep(10) 

try: 
    element = WebdriverWait(browser, 10).until(
    EC.presence_of_element_located((By.XPATH,'//body//input[@name="search"]'))) 
    element = browser.find_element_by_xpath('//body//input[@name="search"]') 
    element.clear() 
    element.send_keys("avatar") 
except: 
    print("cound not find search box") 

time.sleep(5) 
browser.quit() 

Я получаю результат: cound не найти окно поиска

Может кто-то пожалуйста, помогите мне найти то, что я делаю неправильно? Извинения, если это слишком просто, пожалуйста, я новичок в программировании и на python.

+0

Не могли бы вы поделиться точной StackTrace ошибки, а ?? –

+0

Обратите внимание, что 'except' без явного имени исключения будет ловить все ошибки. Вам лучше использовать 'except TimeoutException' – Andersson

+0

Есть ли причина, по которой вы не используете идентификатор,' search-term'? – JeffC

ответ

1

Это вопрос чувствительности к регистру.

Вы использовали WebdriverWait (нижний регистр d) вместо WebDriverWait.

Примечание: Используется модуль trackback, чтобы распечатать трассировку стека, чтобы узнать подробности об исключении.

Попробуйте следующий код:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
import time 
import traceback 

browser = webdriver.Chrome(`/home/zona/chromedriver`) 
url = 'https://www.rottentomatoes.com/' 
browser.get(url) 
time.sleep(5) 

try: 
    element = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH,'//body//input[@name="search"]'))) 
    # element = browser.find_element_by_xpath('//body//input[@name="search"]') 
    element.clear() 
    element.send_keys("avatar") 
except: 
    traceback.print_exc() 
    print("cound not find search box") 

time.sleep(5) 
browser.quit() 
+1

После внесения изменений, рекомендованных Naveen, код теперь работает так, как я ожидаю. Спасибо, Навеен. –