1

我正在尝试使用 Python 登录网站。
我有以下代码,当我登录网站时它确实有效。

import ClientCookie, ClientForm
import urllib, urllib2, cookielib
from BeautifulSoup import BeautifulSoup  

cookies = ClientCookie.MozillaCookieJar()

fp = ClientCookie.urlopen("http://www.renrendai.com/loginPage.action?error=false")

forms = ClientForm.ParseResponse(fp)  
fp.close()  
form = forms[0]  
form["j_username"]  = "userid"   
form["j_password"] = "password"  
fp = ClientCookie.urlopen(form.click())  
fp.close()


userHomePage_href = "http://www.renrendai.com/lend/userHomePage.action?userId=114590"  
userHomePage_doc = ClientCookie.urlopen(userHomePage_href)  
userHomePage_soup = BeautifulSoup(userHomePage_doc,fromEncoding="gb18030")  

但是如果我用它来登录另一个网站,它就不起作用。
我有这个网站的来源:

<input name="txtUserName" type="text" value="tinkei" id="txtUserName" class="lsls" onfocus="changeborder(this)" onblur="changeborder2(this)" style="height:26px;width:280px;border-width:1px; border-color:LightGray;" />
<input name="txtPassword" type="password" maxlength="50" id="txtPassword" onfocus="changeborder(this)" onblur="changeborder2(this)" style="height:26px;width:280px;border-width:1px; border-color:LightGray;" />
<input type="image" name="btnLogin" id="btnLogin" src="http://static.ppdai.com/skin/images/login_n_button.gif" alt="登录" style="border-width:0px;" />&nbsp;

是因为'btnLogin'的值吗?

4

2 回答 2

0

我建议为此使用requests lib,这很容易。

import requests
payload = {'txtUserName': 'value1', 'txtPassword': 'value2'}
r = requests.post("http://www.ppdai.com/login.aspx", params=payload)
>>> r.text
THE_RESPONSE

请尝试我发布的示例,只需将 value1 更改为用户名,将 value2 更改为密码。

示例网址

于 2013-04-02T13:49:28.480 回答
0

您好,我想我可能有类似的问题,但使用不同的站点。我看到了这个:

使用 Python (urllib,urllib2,cookielib) 登录网站:如何找到提交所需的信息?

查看浏览器的开发工具中发送了哪些数据。它是 aspx 还是 >not 都没有关系,或者至少不应该。就您而言,它只是一个 http 服务。确保你也伪造了标题,一些网站会检查它们(用户代理、引用者等)。我 > 还建议使用 requests 模块。– 加图 4 月 8 日 19:41

感谢您的提醒。我会进一步研究伪造标题。至于我的输入值的其余部分,我错过了什么吗?– arete 4 月 8 日 19:43 1

好吧,对于一个你应该解析表单(使用 lxml)来获取值,因为它们很可能是动态的,所以硬编码的值不会这样做。而且我会保留一切,甚至是>空的隐藏输入,只是为了确定。好的,所以这个过程是加载页面 - 解析并获取 >form - 使用 cookie 和标题发布表单数据。– 加图 4 月 8 日 19:52

对于http://www.ppdai.com/login.aspx

我想他们会指这部分

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/     wEPDwUKMTM0MDY0ODA1OQ9kFgICAQ8WAh4EVGV4dAXuATxzY3JpcHQgc3JjPSJodHRwOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij50cnkge3ZhciBwdCA9IF9nYXQuX2dldFRyYWNrZXIoIlVBLTM2MzU2NjQtMSIpO3B0Ll9zZXREb21haW5OYW1lKCcucHBkYWkuY29tJyk7cHQuX3RyYWNrUGFnZXZpZXcoKTt9IGNhdGNoKGVycikge308L3NjcmlwdD5kGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQhidG5Mb2dpbkPZsS5trJ5Fyz2xtZdq47OvRkst" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQKRr4PqCgKl1bKzCQK1qbSRCwKC3IeGDAKQo8KrDbSMQeI06gCgwhXGUNBJw4I0qMjg" />

我希望你设法弄清楚并解决你的问题。

于 2013-04-22T03:18:34.843 回答