Python 爬虫模拟登陆

</head>
    <body>
        <main>
            <section>
                <form class="centerForm" action="/opmt-emp/j_security_check" method="post" onsubmit="javaScript: setUserName();">
                    <div class="login">
                        <h3> <span class="logo" ></span> </h3>
                        <div class="lintro">
                            <ul class="l">
                                <li><input class="tinput" name="j_username" id="j_username" type="text" value="请输入UM用户名" /><span class="userName-icon"></span></li>
                                <li>
                                    <input class="tinput" name="j_password" id="j_password" type="password" style="display:none;" value="" />
                                    <input class="tinput" name="j_password_temp" id="j_password_temp" type="text" value="请输入UM密码" />
                                    <span class="password-icon"></span>
                                </li>
                            </ul>
                            <div class="lbtn"> <button>登录</button> </div>
                        </div>
                        

上面是initial 页面
我想模拟登陆,但不成功

# coding:utf-8
import sys
import urllib2
import urllib
import cookielib

reload(sys)
sys.setdefaultencoding('utf-8')

cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata=urllib.urlencode({'j_username':"XXXX",'j_password_temp':"XXXX"})
req=urllib2.Request(url='http://emp.paic.com.cn/opmt-emp/',data=postdata)
req.add_header('User-Agent','Mozilla/5.0,(Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0')
#req.Request(url='http://emp.paic.com.cn/opmt-emp/',data=postdata)
result = opener.open(req)
print result.read()

应该是输入用户名和密码啊!为什么没有登陆呢?

阅读 5.1k
3 个回答

j_password字段是不是必须的?抓包验证了没?
还有,提交的路径不应该是 /opmt-emp/j_security_check 么? 你的是/opmt-emp

建议抓包分析,推荐使用fiddler

抓包后,主要看post里面的内容,有时网站出来提交用户名和密码外,还有一些其他一些看似无关的内容,其实是用来检验你是不是从这个网站登陆过去,而且根据我爬去学校的教务网的经验,这些内容极有可能是通过一些函数添加进去的。所以你也需要留意一下这个网站js的一些内容,或者从找到的包里直接copy过去试试。

楼上的说的观点都对,另外就是题主你给出了信息不够详细,我只能给一个思路你参考一下,不能给出具体方案。

希望能帮到你。

打开你的浏览器控制台,看看你点击登录时候POST的这个请求当中Form Data的内容,因为这个网站发起登录请求的时候,除了username, password,有可能还需要一些其他的字段内容

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题