2015-06-04 2 views
3

Что не так с этим кодом? Он работает с duckduckgo.com, но не google, wikipedia или yahoo. И да, я меняю идентификатор в соответствии с конкретным сайтом.Python RoboBrowser Автоматизированная функция поиска

import re 
from robobrowser import RoboBrowser 

browser = RoboBrowser() 
browser.open("https://en.wikipedia.org/wiki/Wikipedia") 

# Must find the proper id in the html 
form = browser.get_form(id = "searchInput") 
form 

form["searchval"].value = "Beethoven Opus 131" 
browser.submit_form(form) 

links = browser.get_links() 

for link in links: 
    print(link) 

print("Le Fin.") 

Я получаю следующую ошибку каждый раз (за исключением duckduckgo.com)

line 16, in <module> 
    form["searchval"].value = "Beethoven Opus 131" 
TypeError: 'NoneType' object is not subscriptable 

Почему я получаю ошибку NoneType здесь? Я знаю, что переменная не была определена ранее, но не с Duckduckgo. Пожалуйста помоги.

ответ

2

Прежде всего, вы неправильно найдете form. Элемент с id="searchInput" является элементом input, в то время как вам нужен элемент form - он имеет id="searchform".

Кроме того, так как есть 2 кнопки отправки, вы должны позволить robobrowser который использовать:

form = browser.get_form(id="searchform") 
form["search"].value = "Beethoven Opus 131" 
browser.submit_form(form, submit=form.submit_fields['go']) 

работал для меня.

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