2016-06-24 5 views
1

ここには私がpython requestsモジュールでログインしたいサイトhttp://pro.wialon.com/があります。ログインとパスはデモです。Pythonはリダイレクトでログインを要求します

import requests 
with requests.Session()as c: 
    url = 'http://pro.wialon.com/' 
    payload = dict(user='demo', 
         passw='demo', 
         login_action='login') 
    r = c.post(url, data=payload, allow_redirects=True) 
    print(r.text) 

率直に言えば(レポートタブで)レポートを返信したいと考えています。 。しかし、私は、ポストのURLが間違っていると、フォームデータが欠落している、あなたはまた、最初の要求を行う必要がありますログインする方法

+0

あなたは十分な情報を教えてくれませんでした。うまくいかなかったことを私たちに伝えることは良いスタートになるでしょう。私が確かに知っていることは、このウェブサイトはほとんどのウェブサイトのように*おそらく*クッキーを使用しており、あなたのリクエストにクッキージャーを渡さないと、ログインできないかもしれないということです。 –

+0

また、もう一度やろうとしていますが、一度ログインするとほとんどのことをやろうとしている場合は、 'browsercookie'モジュールを見ることができます。これにより、Firefox/Chromeでログインし、Webブラウザで作成したセッションをプログラムで使用できます。 –

答えて

0

を把握正しいURLにポストしてからhttp://pro.wialon.com/service.htmlを得るカント:

data = {"user": "demo", 
    "passw": "demo", 
    "submit": "Enter", 
    "lang": "en", 
    "action": "login"} 

head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} 

with requests.Session() as c: 
    c.get('http://pro.wialon.com/') 
    url = 'http://pro.wialon.com/login_action.html' 
    c.post(url, data=data, headers=head) 
    print(c.get("http://pro.wialon.com/service.html").content) 

あなたはネットワークタブの下にクロムのdevのツールにポストを見ることができます。また

enter image description here

ポストのデフォルトを要望等を取得するには、あなたがここでそれを指定する必要はありませんので、リダイレクトを可能にすることです。

あなたは、ログインページのソースにフォームアクション見ることができます:

<form class="login_bg_form" id="login_form" action="login_action.html" method="POST"> 

の代わりに、我々は、フォームからそれを解析することができますパスをハードコーディング、使用BS4

import requests 
from bs4 import BeautifulSoup 
from urlparse import urljoin 

data = {"user": "demo", 
     "passw": "demo", 
     "submit": "Enter", 
     "lang": "en", 
     "action": "login"} 

head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} 

with requests.Session()as c: 
    soup = BeautifulSoup(c.get('http://pro.wialon.com/').content) 
    redir = soup.select_one("#login_form")["action"] 
    url = 'http://pro.wialon.com/login_action.html' 
    c.post(url, data=data, headers=head) 
    print(c.get(urljoin("http://pro.wialon.com/", redir)).content) 

を唯一の問題は、データが大部分がajaxリクエストを使用して作成されていることです。データをスクラップする場合は、リクエストを模倣する必要があります。

+0

ありがとうございます。その今働いています:) –

+0

いいえporb、あなたは大歓迎です。 –

関連する問題