Python 模拟登录的两种实现方法
本文详细介绍 Python 实现网站模拟登录的两种方法。重点在于获取表单提交地址并携带 Cookie 进行 POST 数据提交。通过普通脚本方式与面向对象封装两种方式,演示如何利用 urllib 和 http.cookiejar 模块完成身份验证及后续页面访问,帮助开发者掌握抓取需登录权限网页的核心技术。
Python 模拟登录的两种实现方法
在进行数据抓取项目时,部分网站内容需要用户登录后方可查看,因此实现模拟登录功能变得不可或缺。本文主要提供两个示例:一个是采用普通脚本风格编写的实现,另一个则是基于面向对象思想封装的实现方案。
模拟登录的核心关键在于定位表单真实的提交地址,随后携带 Cookie 信息,通过 POST 方式提交必要数据。一旦登录成功,即可利用已建立的会话访问其他任意网页,进而获取所需的页面内容。
方式一:
import urllib.request
import urllib.parse
import http.cookiejar
#post的内容
values={
'logon.x':'linke',
'password':'xxxx',
'username':'xxxxx'
}
#登陆的地址
logUrl="http://192.168.32.112:8080/templates/index/hrlogon.do"
#构建cook
cook=http.cookiejar.CookieJar()
#构建openner
openner=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cook))
#添加headers
openner.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')]
r=openner.open(logUrl,urllib.parse.urlencode(values).encode())
#print(r.read().decode('gbk'))
r=openner.open("http://192.168.132.62:8080/kq/kqself/card/carddata.do?b_query=link")
print(r.read().decode('gbk'))
方式二:
import urllib
import urllib.request
import urllib.parse
import http.cookiejar
import re
class loginRLKQ:
post_data=b"";
def __init__(self):
#初始化类,cook的值
cj=http.cookiejar.CookieJar()
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
opener.addheaders=[('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')]
#初始化全局opener
urllib.request.install_opener(opener)
#login方法需要加入post数据
def login(self,loginurl,encode):
#模拟登陆
req=urllib.request.Request(loginurl,self.post_data)
rep=urllib.request.urlopen(req)
d=rep.read()
#print(d)
d=d.decode(encode)
return d
#登陆之后获取其他网页方法
def getUrlContent(self,url,encode):
req2=urllib.request.Request(url)
rep2=urllib.request.urlopen(req2)
d2=rep2.read()
d22=d2.decode(encode)
return d22
if __name__=="__main__":
#实例化类
x=loginRLKQ()
#给post数据赋值
x.post_data=urllib.parse.urlencode({'username':"xxdd",'password':'xxdd','logon.x':'linke'}).encode(encoding="gbk")
#登陆
y=x.login("http://192.168.132.61:8080/templates/index/hrlogon.do","gbk")
#获取网页信息
print(x.getUrlContent("http://192.124.32.16:8080/kq/kqself/card/carddata.do?b_query=link","gbk"))
以上即为 Python 实现模拟登录的具体方法。若有任何疑问,欢迎留言或在本站社区进行交流讨论。感谢阅读,希望本文能对大家有所帮助,谢谢各位对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













