2012-03-12 13 views
1

ユーザー固有のデータを解析するために安全なWebサイトにログインする方法を理解しようとしています。私はPHPで記述したいと思いますが、検索の多くは実際にはその言語のためのものではありません。私はPythonに精通していて、このシナリオでもっと役に立つと思うかもしれません。また、多くのサイトには、そのサイトに固有のAPIがログインするようになっているようです。しかし、特定のAPIを検索して使用することは、私が一度だけ書くことができたもののためのより多くの仕事のように思えます。例えばユーザー情報を解析するためにWebサイトにログイン

はどのように私はプログラム的にstackoverflowのにログインしてから、私はログインしてきた日連続の合計数を取得するために自分のプロフィールを解析でき

私が使用した、私がこれを書いたSimple_HTML_DOMを使用します。以前にセキュリティで保護されていないHTMLを解析する

<?php 
include_once('simple_html_dom.php'); 
$html = file_get_html("http://stackoverflow.com/users/779920/nick");  
foreach($html->find('[class=days-visited]') as $e) 
    echo $e->outertext . '<br>'; 
?> 

ただし、この場合は機能しません。私はこれが正しい軌道にあるかどうかは分かりませんが、私はChrome用Firebugを使ってPOSTデータを使いこなそうとしましたが、ツールは今私にとってかなり複雑で、データを適切に解読する方法がはっきりしていません。与えられたm。

ご協力いただければ幸いです。

+0

CURL()が答えで、サイトの用語を注意してください。ほとんどのサイトでは、これを行うことで条件に違反します。 –

答えて

2

私はそれがページが認証に使用しているシステムに正確に依存していると思いますが、ここではまったく同じことについて最近使用したスニペットです。

# An example website 
domain = 'http://secure.website.com' 
url = domain + '/web/page.html' 
# Create a new authentication handler 
auth_handler = urllib.request.HTTPBasicAuthHandler() 
# Set the login username and password 
auth_handler.add_password(None, domain, user='username', passwd='password') 
# Create and install a new opener for the handler 
opener = urllib.request.build_opener(auth_handler) 
urllib.request.install_opener(opener) 
# Connect to the page 
conn = urllib.request.urlopen(url) 
# Read all data on the webpage 
page = conn.readall().decode() 
# close the connection 
conn.close() 

私はあなたがurllibマニュアルを参照してください(のpython3のためpython2では、それはurllib2です。):私の場合、私は単純にページをダウンロードしたかったです。合理的に文書化されていますが、私が必要としていた正確な手順を理解するためには少しの試行錯誤が必要でした。認証ハンドラは、ログインした のルート(この場合はhttp://secure.website.com)までしか処理する必要がないことに注意してください。ハンドラをインストールすると、そのドメインに属するすべてのページが認識され、与えられた認証情報が使用されます。これは安全ではないことも覚えておいてください。コードにアクセスできる人は誰でもあなたのログインの詳細を見ることができます。

Webページを解析する場合は、html.parser(またはpython2バージョンHTMLParser)、またははるかに強力なBeautifulSoupを使用できます。

関連する問題