PHPで他サイトにログインしてHTMLソースを取得

このQ&Aのポイント
  • PHPを使用して他のサイトにログインし、HTMLソースを取得する方法について知りたいです。
  • 静的HTMLページの場合、file_get_contents関数を使用してHTMLソースを読み込み、目的の部分を抽出することができますが、他のサイトにログインする方法がわかりません。
  • ログインの種類はフォームタイプであり、Basic認証ではないです。PHPで他のサイトにログインする方法があれば教えてください。
回答を見る
  • ベストアンサー

PHPで他サイトにログインしてHTMLソースを取得

PHPで他のサイトにログインしてHTMLソースを取得できますか? 例えば http://www.goo.ne.jp/ http://www.yahoo.co.jp/ http://jp.msn.com/ 上記それぞれのサイトにログインして メール受信件数を取得して、まとめて表示したいです。 静的HTMLページであれば file_get_contents関数で文字列として読み込み preg_matchで目的のHTML部分を正規表現で指定し explodeで分割して目的の部分だけを抽出 といったような流れで、だいたい可能なのは解かりました。 ただし、その前段階のphpで他のサイトにログインする方法が解かりません。 ログインの種類は、上記の例であげたように フォームタイプのログイン形式です。 Basic認証タイプではありません。 PHPで行う方法はあるのでしょうか。 宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.2

自分でCookieをハンドリングするか、ライブラリを使うか。 PEARに HTTP_Request2 というライブラリがあるようです。使い方は検索してください。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5077/13265)
回答No.1

フォームでログインするタイプのサイトは、認証に成功した場合Cookieを使ってセッション情報をブラウザに保持させて、認証後のページでユーザーを特定している場合が多いです。 この場合、ログイン処理へアクセスしてサーバから送られてきたCookie情報を保持しておき、その後のページへアクセスする際に保持しているCookie情報をサーバへ送る必要があります。 Cookie情報の送信はstream_context_createを使ってデータを作成し、file_get_contentsに渡せばできるはずです。 PHPのプログラムでこのようなアクセスをする場合、サイトによっては規約に反する場合もありますので、注意してください。

関連するQ&A

  • ログイン後HTMLソースを取得には

    yahoo、goo、mixiなどログイン認証が必要なサイトは 多々あると思いますがPHPで自動ログイン後 ソースを取得するようなロジックを考えています。 どなたか参考になるサイト、ロジックなどをご存知でしたら 教えていただければ幸いです。

    • ベストアンサー
    • PHP
  • PHPで取得したHTMLソースと実際のソースの違い

    PHPで、 file_get_contents($uri) などで取得したHTMLソースと、実際にアクセスして表示したソースが違う場合があります。 例えば、ネットオフというサイトが違いました。 http://www.netoff.co.jp/cmdtyallsearch/hdnAllSearchFlg/1/Ctgry/home/LRack/*/SetFlg/?cat=&word=9784864102254 PHPで取得すると、商品結果の情報を取得できなかったのですが、 実際のソース(FireFoxでCtrl+Uでページのソース表示)は表示されています。 こういったページもPHPで取得することは可能なのでしょうか? わかる方よろしくおねがいします。

    • ベストアンサー
    • PHP
  • ログイン後のソースの取得

    PHPを勉強しはじめて1ヶ月そこらです; よろしくお願いします。 現在ある会員サイトのログイン後のマイページの取得を したいと思っています。 掲題の処理を実装するためにいろいろ見て回ったのですが、 無料のレンタルサーバーで勉強しているので、 PEARや、CURLが使えません。 ですので、下記のサイトを参考にして、ブラウザへのリクエストを PHPの関数だけで実行しようとしています。 http://www.spencernetwork.org/memo/tips-3.php おそらく、リクエストヘッダ部分にログイン情報的なクッキーを 書き込んでリクエストすれば、レスポンスで ログイン後のソースが取得できるのだと思うのですが、 その際に送信すべき、ログインクッキー情報は何を設定すれば よいのかがわからず困っています。 その会員サイトでは、ログインすると、2つのクッキーファイルが 吐き出されるのですが、それらの中のどの値をヘッダ部分に 書き込めばいいのかが判りません。 何を書き込めばログインしている、とサーバーに認識して もらえるのか、調べる方法などはありますでしょうか? いろいろクッキー情報内の値を送信して試しているのですが、 「ログインしてください」というレスポンスしか 得ることができません。 お詳しい方にご教授いただければ幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPで<title>タグ取得の動作が非常に重い

    PHPで<title>タグ取得の動作が非常に重い $html = file_get_contents($url); if(preg_match( "/<title>(.*?)<\/title>/i", $html, $match)) { } 上記のような方法で一度に(1ページ内で)30サイトほどの<title>タグを取得すると、不可がかかり、表示までにかなり時間がかかってしまいます。 preg_match では重いのでしょうか。 それとも一度に30サイトはそもそも無理があるのでしょうか。。

    • ベストアンサー
    • PHP
  • HTMLでPHPを動かすには?

    さまざまなサイトでよく、ログイン画面(ID/PW)を入力する画面がありますが、私の担当しているサイトはログイン認証はJavaScriptで行っています。 最近になって、ログイン認証をJSではなく、サーバー側(PHP)で認証チェックをかけようという話になりました。 しかし、PHPをいじるのは膨大な作業になってしまうため、HTML(画面) でPHPのログイン認証処理を行いたいと考えています。 いろいろなサイトをみていて http://digit-01.com/ownpage/php_exct_html.html のようにできないかな?と思いました。 (1)Apacheの設定を追加  →AddType application/x-httpd-php .htmlを追加 (2)htmlファイルを用意  →.htmlですが、中身はPHP(ログイン認証チェック処理) (3)HTML(画面)で、(2)のファイルをインクルードさせる 上記の方法ではたして、うまくPHPが実行されるのか心配です。。。 アドバイス頂けないでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • PHPを使ってmixiのHTMLを取得したい

    PHPを使って、mixiの「メンバーの参加コミュニティ」のHTMLを取得する方法を探しています。 ログインとコミュニティページのHTMLは取得できましたが、 メンバーの参加コミュニティのHTMLだけが取得できません。 http://mixi.jp/related_community.pl?id=コミュニティ番号 にpearのHTTP_Requestでアクセスしても、 Found The document has moved here. といったページが返ってきてしまいます。 取得方法をご存知の方、どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • 他サイトの情報を取得できますか?

    こんにちわ。 perlでのCGIでこんなことはできるか質問があります。 例えば他サイトで更新されている株価などを自動で取得する方法はできるでしょうか? Yahooファイナンスのサイトで表示される株価をCGIの値に取り込むことってできるのでしょうか? それに限らず、他のサイトでのHTMLページから値を取得することはできるか教えてください。 とりあえず技術的にできるかどうかを教えていただきたいです。 無論、上記のようなことを無断で営利目的にやるつもりではありません。 よろしくお願いします。

    • 締切済み
    • CGI
  • PHPでHTMLソースから特定のURLを抽出したい

    PHPで外部サイトのHTMLソース内の特定のURLを取得するにはどうすればいいでしょうか? 具体的には楽天市場の個別商品ページのHTMLソースにあるレビューページのURLを抽出したいと思っています。 ttp://item.rakuten.co.jp/asagao/332/のHTMLソースから レビューページのURLのttp://review.rakuten.co.jp/item/1/229861_10000050/1.1/を取得するようなプログラムを作りたいと思っています。 自力で頑張ってみたもののPHP初心者のため、preg_matchや正規表現でお手上げ状態になってしましました。 プログラムのソースコードを教えていただけると助かります。 ご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでWebページの特定部を取得したいのですが、上手くいきません。

    PHPでWebページの特定部を取得したいのですが、上手くいきません。 現在file_get_contentsを用いてURLを指定して取得し、preg_matchの引数にする方法で行っています。 また、preg_matchは以下のように用いています。 preg_match("/パターン(.*?)パターン/s", $html, $matches); print_rで$matchesを表示してみたところArray()のみ出力されます。 また、話が逸れて申し訳ないですが、上記とは別にfile_get_contentsを用いて動的にURLを指定して取得しているのですが、処理に時間がかかります。(約10秒) $wordをURLに組み込む変数として以下のように記述しています。 file_get_contents("http://…".$word."…(URLの続き)"); 以上の2点についてご教示願います。

    • ベストアンサー
    • PHP
  • PHPでHTMLソースを取得する方法はありますか?

    PHPでHTMLソースを取得する方法はありますか? RSSで複数のHTMLソースを取得しました。 以下のことをやりたいのですが、こういったことは可能でしょうか? ・複数のHTMLソースを取得する(同じサイトからなのでタグの種類も大体同じものです) ・その中から<data>タグを取得する(dataの中にはそれぞれ適当な数字が入っています) ・それをソートして、ソート順にURLを表示する。 このようなことは可能でしょうか? $RSS=RSSのURL(XML) foreach($RSS as $value){ $URL[]=$value->URL; } for ($i = 0, $n = count($URL); $i < $n; $i++) { echo $URL[$i] . "<br />"; } これでそれぞれのURLが URL1 URL2 URL3 とそれぞれ表示されます。これらのURLからそれぞれの<data>タグを取得して上のようなことをやりたいです。 説明が下手で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう