【发布时间】:2017-10-25 04:51:30
【问题描述】:
我已下载 robobrowser 以帮助我登录网页进行网页抓取。
我了解流程,但在访问表单元素时遇到问题。
from robobrowser import RoboBrowser
browser = RoboBrowser(history=True)
url1 = "example_url"
username = "example_user"
password = "example_pass"
browser.open(url1)
form = browser.get_forms()
form['username'] = username
似乎只有一种形式,当我尝试将其转换为字符串的示例时,它似乎正在找到该形式。由于某种原因,除非我转换为字符串,否则它不会在 spyder 工作区中显示为变量。
我查看了 html,并且用户名条目的名称和 id 确实是“用户名”。我得到了错误
form['username'] = username
TypeError: list indices must be integers or slices, not str
它不接受尝试通过“用户名”访问表单中的索引,但这是我见过的该模块的所有示例中的语法。
【问题讨论】:
-
试试
print form。我猜browser.get_forms()返回一个列表。答案也使用get_form()。 -
get_forms()(带有 s)表示您没有得到一个表单,而是一个表单列表。您必须从列表中提取您需要的表格。
标签: python web-scraping beautifulsoup urllib robobrowser