2016-08-28 15 views
3

私の学校のページからいくつかの情報をウェブスクラップしようとしていますが、過去のログインに苦労しています。私は似たようなものがあることを知っています。私は一日の読書をしていますが、それを機能させることはできません。Pythonのリクエストモジュールを使用してASP Webサイトにログイン

これは、(ユーザー名とパスワードが変更された)を使用してプログラムのイムです:

import requests 

payload = {'ctl00$cphmain$Loginname': 'name', 'ctl00$cphmain$TextBoxHeslo': 'password'} 

page = requests.post('http://gymnaziumbma.no-ip.org:81/login.aspx', payload) 
open_page = requests.get("http://gymnaziumbma.no-ip.org:81/prehled.aspx?s=44&c=prub") 

#Check content 
if page.text == open_page.text: 
    print("Same page") 
else: 
    print(open_page.text) 
    print("Different page!") 

あなたは間違ってやって何イム、私に言うことはできますか?いくつかのパラメータがありませんか?要求はこのために良いmetodですか?私はrobobrowserとBeautifulSoupを試していましたが、どちらもうまくいきませんでした。私は本当に些細なものを見逃しています。

答えて

3

のPython 3.5を使用して

イム

まず第一に、あなたがそうであっても第二はそれについて何も知らないであなたの最初のポストが正常にログインできます場合 Sessionを使用していません。第二に、あなたが投稿する必要のあるデータ、あなたが BeautifulSoupを使用してソースから解析することができます __VIEWSTATEGENERATOR__VIEWSTATE不足している:

from bs4 import BeautifulSoup 

data = {'ctl00$cphmain$Loginname': 'name', 'ctl00$cphmain$TextBoxHeslo': 'password'} 
# A Session object will persist the login cookies. 
with requests.Session() as s: 
    page = s.get('http://gymnaziumbma.no-ip.org:81/login.aspx').content 
    soup = BeautifulSoup(page) 
    data["___VIEWSTATE"] = soup.select_one("#__VIEWSTATE")["value"] 
    data["__VIEWSTATEGENERATOR"] = soup.select_one("#__VIEWSTATEGENERATOR")["value"] 
    s.post('http://gymnaziumbma.no-ip.org:81/login.aspx', data=data) 
    open_page = s.get("http://gymnaziumbma.no-ip.org:81/prehled.aspx?s=44&c=prub") 

    #Check content 
    if page.text == open_page.text: 
     print("Same page") 
    else: 
     print(open_page.text) 
     print("Different page!") 

をあなたはChromeで掲載されますすべてのフォームのデータを見ることができます開発ツール。

enter image description here

何上記投稿されたことは、あなたが必要な任意の値がBeautifulSoupを使ってログインテーブルから解析することができない場合は、ログイン取得するのに十分でなければなりません。

+0

ありがとうございます。私はセッションについて知らなかった。あなたのソリューションを使用しようとすると、RoboBrowserを使用しようとした時と同じエラーが発生します。 NoneType 'オブジェクトはサブスクリプトではありません。'なぜそれが起こることができるか考えていますか? –

+0

「__VIEWSTATE」にはすべての大文字を使用していたはずです。今は正常に動作するはずです。 –

+0

ありがとうございました。 3つの別のパラメータをデータに追加した後、それはうまく動作します:) –

関連する問題