我刚刚开始使用 python 和 Mechanize ,我需要一些帮助来理解为什么这不起作用。
import mechanize
username = "<username>"
password = "<password>"
ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0 (compatible;)'
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-Agent', ua), ('Accept', '*/*')]
br.open("https://www.instagram.com/accounts/login/")
br.select_form(nr=0)
br[username] = username
br[password] = password
result = br.submit().read()
f = open('output.html','w')
f.write(result)
f.close()
它抛出的错误是:
FormNotFoundError: 没有匹配 nr 0 的表单
我无法弄清楚正确的表单 ID 是什么。即使在尝试使用以下内容列出所有表单之后:
print("\n Printing all forms on page...\n")
for form in br.forms():
print("Form Name:", form.name)
print form
print("\n Done printing forms...\n")
表格列表为空。如果 Mechanize 无法看到表单本身,我如何找到表单 ID?
最佳答案
要选择第一个表单,您可以执行以下操作:
br.form = list(br.forms())[0]
然后,输入用户名和密码:
br.form["username"] = username
br.form["password"] = password
最后,提交:
req = br.submit()
编辑:刚刚注意到您说表单列表将返回空。这很可能是因为该站点正在使用 javascript。使用 Selenium 可能会更好。
祝你好运!
关于python - 使用 python 和 mechanize 登录 Instagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489301/