2014-12-24 1 views
0

그래서 웹 사이트 (내부 합류점)로 이동하여 특정 HTML 페이지를 가져 오는 코드를 작성하려고합니다. 나는 BeautifulSoup 작업으로 html을 해독하는 코드 부분을 가지고 있지만, 페이지에 액세스하기 전에 로그인해야하기 때문에로드 블록을 쳤다. 나는 성공과 urllib 요청을 사용하여 시도했다. 또한 파이썬 3.4를 사용하고 있습니다.파이썬을 사용하여 웹 사이트의 로그인 및 액세스 페이지

def log(): 
    URL = 'confluence page here' 
    EMAIL = '****' 
    PASSWORD = '****' 

    # Start a session so we can have persistant cookies 
    session = requests.session(config={'verbose': sys.stderr}) 

    # This is the form data that the page sends when logging in 
    login_data = { 
     'loginemail': EMAIL, 
     'loginpswd': PASSWORD, 
     'submit': 'login', 
    } 

    # Authenticate 
    r = session.post(URL, data=login_data) 

    # Try accessing a page that requires you to be logged in 
    r = session.get(page i want to access) 
    return r 

그러나 오류 TypeError: session() got an unexpected keyword argument 'config'가 표시됩니다. 누구든지 합류 위키에 로그인 한 다음 임의의 페이지 수의 html 소스를 잡는 방법을 알고 있습니까? 지원되지 않는 패키지는 사용하지 않는 것이 좋습니다.

+0

최신 버전의'request'에는 API 변경 사항이 있습니다. http://docs.python-requests.org/ko/latest/api/#api-changes를 참조하십시오. 이는 당신을 물게 할 수 있습니다. 특히, "요청 방법에 대한 config 매개 변수가 제거되었습니다. [snip] 자세한 옵션은 로깅을 구성하여 처리해야합니다." –

답변

1

좋아, 나는 그것을 알아낼 수 있었다. 그리고 내가 그것을 어떻게 여기에서했는지에 관해 알 수 있었다.

email = input('username: ') 
password = getpass.getpass(prompt = 'password: ',stream =None) 
url = '##login page' 

login_data = { 
    'os_username': email, 
    'os_password': password, 
    'login': 'Log In', 
} 
s = requests.session() 
s.post(url, login_data) 

그래서 그 중요한 내가 요청시 일부러 방법을 html로 작품을 이해하는,하지만 당신은 HTML을 검사하고 로그인이 os_username이었다 내 경우에는 변수 부르는 것을 찾을 필요가있다. 그러면 login_data에서했던 것처럼 사전을 만들 수 있습니다. 그런 다음 표시된 코드 위에 가져온 요청을 사용하여 데이터를 게시하고 메소드 내부에있는 동안 로그인 상태를 유지할 세션을 만듭니다. 바라기를 이것은 여기에 저에게 감미로운 감미로운 브라우니 점을 얻을 것이다. :)

관련 문제