[英]Automated Website Login using python's mechanize
我正在尝试自动登录到其登录表单具有以下HTML代码(摘录)的网站:
<tr>
<td width="60%">
<input type="text" name="username" class="required black_text" maxlength="50" value="" />
</td>
<td>
<input type="password" name="password" id="password" class="required black_text" maxlength="50" value="" />
</td>
<td colspan="2" align="center">
<input type="image" src="gifs/login.jpg" name="Login2" value="Login" alt="Login" title="Login"/>
</td>
</tr>
我正在使用python的mechanize
模块进行网络浏览。以下是代码:
br.select_form(predicate=self.__form_with_fields("username", "password"))
br['username'] = self.config['COMMON.USER']
br['password'] = self.config['COMMON.PASSWORD']
try:
request = br.click(name='Login2', type='image')
response = mechanize.urlopen(request)
print response.read()
except IOError, err:
logger = logging.getLogger(__name__)
logger.error(str(err))
logger.debug(response.info())
print str(err)
sys.exit(1)
def __form_with_fields(self, *fields):
""" Generator of form predicate functions. """
def __pred(form):
for field_name in fields:
try:
form.find_control(field_name)
except ControlNotFoundError, err:
logger = logging.getLogger(__name__)
logger.error(str(err))
return False
return True
return __pred
不知道我在做什么错...
谢谢
该网站可能会在登录期间使用java-script进行回发。 我记得很清楚,对于ASP .Net站点,您需要掌握HIDDEN FORM字段(例如VIEWSTATE和EVENTTARGET)并将其发布到新的Page上。 您为什么不将链接发送到Question网站? 之后相对容易找出
from selenium import PhantomJS
import platform
if platform.system() == 'Windows': # .exe for Windows
PhantomJS_path = './phantomjs.exe'
else:
PhantomJS_path = './phantomjs'
service_args = [ # Proxy (optional)
'--proxy=<>',
'--proxy-type=http',
'--ignore-ssl-errors=true',
'--web-security=false'
]
browser = PhantomJS(PhantomJS_path, service_args=service_args)
browser.set_window_size(1280, 720) # Window size for screenshot (optional)
login_url = "<url_here>"
# Credentials
Username = "<insert>"
Password = "<insert>"
# Login
browser.get(login_url)
browser.save_screenshot('login.png')
print browser.current_url
browser.find_element_by_id("<username field id>").send_keys(Username)
browser.find_element_by_id("<password field id>").send_keys(Password)
browser.find_element_by_id("<login button id>").click()
print (browser.current_url)
browser.get(scrape_url)
print browser.page_source
browser.quit()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.