대학 프로젝트를위한 몇 개의 웹 사이트를 크롤링해야하며 로그인이 필요한 사이트의 막 다른 골목에 처했습니다. urllib, urllib2, cookielib 모듈을 Python으로 사용하여 로그인했습니다. http://www.cafemom.com에는 작동하지 않습니다. 수신 한 http 응답이 .txt 파일에 저장되며 '로그인 실패'페이지에 해당합니다.파이썬을 사용하여 웹 사이트에 로그인하는 데 도움이 필요합니다.
나는 또한이 목적을 위해 "능 직물"패키지를 사용해 보았는데, 저도 잘 맞지 않았습니다. 누구든지 제가해야 할 일을 제안 할 수 있습니까?
다음은이 목적으로 사용한 주요 login() 메소드입니다.
def urlopen(req):
try:
r = urllib2.urlopen(req)
except IOError, e:
if hasattr(e, 'code'):
print 'The server couldn\'t fulfill the request.'
print 'Error code: ', e.code
elif hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ', e.reason
raise
return r
class Cafemom:
"""Communication with Cafemom"""
def __init__(self, cookieFile = 'cookie.jar', debug = 0):
self.cookieFile = cookieFile
self.debug = debug
self.loggedIn = 0
self.uid = ''
self.email = ''
self.passwd = ''
self.cj = cookielib.LWPCookieJar()
if os.path.isfile(cookieFile):
self.cj.load(cookieFile)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
urllib2.install_opener(opener)
def __del__(self):
self.cj.save(self.cookieFile)
def login(self, email, password):
"""Logging in Cafemom"""
self.email = email
self.passwd = password
url='http://www.cafemom.com/lohin.php?'
cnt='http://www.cafemom.com'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
body = {'identifier': email, 'password': password }
if self.debug == 1:
print "Logging in..."
req = urllib2.Request(url, urllib.urlencode(body), headers)
print urllib.urlencode(body)
#print req.group()
handle = urlopen(req)
h = handle.read()
f = open("responseCafemom.txt","w")
f.write(f)
f.close()
나는이 코드를 사용하여 시도 및
import urllib, urllib2, cookielib
username = myusername
password = mypassword
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'identifier' : username, 'password' : password})
opener.open('http://www.cafemom.com/login.php', login_data)
resp = opener.open('http://www.cafemom.com')
print resp.read()
"login.php"SpEL을의 응답을 읽는 방법입니다 잘못했다 - "lohin.php". 또한 http://cl.ly/272Q2o2q3P2p1g1B1K44를 확인하십시오 - '식별자'및 '암호'보다 많은 필드가 있음을 유의하십시오. –