>  기사  >  백엔드 개발  >  Python에서 시뮬레이션된 로그인을 구현하는 두 가지 방법의 코드 예제

Python에서 시뮬레이션된 로그인을 구현하는 두 가지 방법의 코드 예제

黄舟
黄舟원래의
2017-08-10 14:18:361997검색

이 글에서는 Python에서 시뮬레이션된 로그인을 구현하는 두 가지 방법에 대한 관련 정보를 주로 소개합니다. 다음은 두 가지 방법입니다. 하나는 일반 글쓰기로 작성되고, 다른 하나는 시뮬레이션된 로그인이 완료된 후에만 콘텐츠를 캡처할 수 있습니다. 도움이 필요한 친구는

Python에서 시뮬레이션 로그인의 두 가지 구현 방법

을 참조하세요. 가끔 프로젝트를 크롤링할 때 특정 콘텐츠를 보려면 특정 웹 사이트에 로그인해야 하므로 시뮬레이션 로그인 기능이 필요합니다. 이번에 싼시안이 쓴 글은 크게 두 가지 예를 들고 있는데, 하나는 일반적인 글쓰기 방식으로 썼고, 다른 하나는 객체지향 글쓰기를 바탕으로 썼다.

시뮬레이션 로그인의 핵심은 양식의 실제 제출 주소를 찾은 다음 쿠키와 게시물 데이터를 전달하는 것입니다. 로그인에 성공하면 다른 웹페이지에 액세스하여 웹페이지 콘텐츠를 얻을 수 있습니다.

방법 1:


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'))

방법 2:


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에서 시뮬레이션된 로그인을 구현하는 두 가지 방법의 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.