3

这段代码有什么问题?它适用于duckduckgo.com,但不适用于谷歌、维基百科或雅虎。是的,我正在根据特定网站更改 ID。

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 定义。请帮忙。

4

1 回答 1

2

首先,您定位form不正确。元素 withid="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'])

为我工作。

于 2015-06-04T21:16:43.807 回答