我是一个新手在网络抓取,但想尝试在一个项目中使用它。我想登录一个fantasyfootball网站,下面是网站上的表格:
<fieldset>
<table cellspacing="0" cellpadding="0" border="0" width="695" class="data-entry">
<tbody>
<tr>
<td>
<label><span>Email Address</span></label>
<input id="j_username" class="required email" type="text" name="j_username" title="*Please enter a valid email address" />
</td>
<td>
<label><span>Password</span></label>
<input id="j_password" class="required password" type="password" name="j_password" title="*Please enter a valid password<br/>(minimum 6 characters)" />到目前为止,我的代码如下:
from httplib2 import Http
from urllib.parse import urlencode
url='https://users.premierleague.com/PremierUser/account/login.html'
h=Http()
email='myemail'
password='mypassword'
h.add_credentials(email,password)
data={'j_username':'myemail','j_password':'mypassword'}
web_data = urlencode(data)
response, content = h.request(url, 'POST', web_data)我没有收到任何错误,只是什么都没有
发布于 2014-10-29 22:31:23
问题是您正在POST到包含登录表单的页面,而不是处理登录表单的页面。如果您检查登录表单的超文本标记语言,您将看到spring是“../j_ action _security_check”,它等同于https://users.premierleague.com/PremierUser/j_spring_security_check。因此,在您的代码中,将URL更改为该URL。另外,去掉add_credentials行,因为它们没有使用HTTP Basic Auth。一旦你走到这一步,你可能仍然不会在登录页面的响应中得到正文。成功登录后,您可能会进入302主页。因此,在执行此操作时,请仔细查看您的响应头。此外,在成功登录时,它将为您提供某种类型的会话ID,您需要在后续请求中包含该ID,以证明您已登录。详细信息将具体到此站点管理会话的方式。
https://stackoverflow.com/questions/26632642
复制相似问题