我正在尝试使用python mechanize登录。
表单代码很简单:(我也简化了它)
<form onsubmit="return(doSubmit());" action="/pkmslogin.form" method="post" name="frmLogin">
<input type="text" size="9" maxlength="128" value="" name="userid">
<input type="password" size="20" maxlength="46" value="" name="password">
<input type="submit" onclick="if (setReqURL()==false) return false; if (checkCookiesAtField(userid)) return true; else return false;" value=" OK " name="btnSubmit">
但是,当我尝试找到表格或控制元素时,我会得到controlnotfounderror。
输入:
for f in br.forms():
print f
输出:
<GET https://www.domain.com/pkmslogin.form application/x-www-form-urlencoded
<TextControl(<None>=)>
<TextControl(<None>=)>
<TextControl(<None>=)>
<TextControl(<None>=)>
<TextControl(<None>=)>>
<frmDummy GET https://www.domain.com/pkmslogin.form application/x-www-form>
使用FF Inspect Element或Firebug时,它清楚地将第一个表单的名称显示为“loginform”,输入框为“userid”和“password”。
我已经不知疲倦地试图解决这个问题。
非常感谢任何帮助。
这是我的代码..非常基本,但不成功。我觉得这将是一个cookie问题。但我不确定这个网站是如何构建cookie的。
from bs4 import BeautifulSoup
import urllib2, urllib
import requests
import mechanize
import cookielib
import html2text
import csv
import sys, logging
import time
import os
br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# User-Agent
br.addheaders = [('User-agent', 'Mozilla/5.0 ]
br.open('https://www.domain.com/pkmslogin.form')
time.sleep(2)
br.select_form(nr=1)
# br.form['userid'] = "****"
# br.form['password'] = "************"
#br.submit()
编辑添加: 在登录页面上: 如果我:
sdata = br.response().read()
soup = BeautifulSoup(sdata)
print soup
我在表单字段中得到了这个:
document.write("<td align=left><input type=\"text\" name=\"userid\" value=\"\" maxlength=\"128\" size=\"30\"></td>");
document.write("<td align=left><input type=\"password\" name=\"password\" value=\"\" maxlength=\"46\" size=\"30\">");
如果这有帮助......希望它能做到......