• 締切済み

ソケット通信

いつもお世話になっております。 私は最近、指定したウェブページのソースからリンク先のURLをリストとして書き出すツールを作ろうと思っているのですが、ウェブページのソースを所得する方法がわかりません。 某SNSで質問してみたところ、ソケット通信でhtmlデータを受信し、strstr()等で検索すれば良いとのことで調べては見たものの、通信関係は全くの無知なので理解し難い部分が多々ありました。 ですからここで質問させていただいたのですが、具体的にどのようなプログラムを書けばhtmlソースを受信することができるのでしょうか?

みんなの回答

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

単純にソケット通信といっても、 環境によって多少違いがあります。 お使いの環境を教えてください。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★追記。 ・InternetReadFile() API関数を利用するには  (1)『wininet.h』ヘッダをインクルードします。  (2)『WinInet.Lib』ライブラリをインポートします。  ※windows.h をインクルードしていれば wininet.h はインクルードしなくても良い。 ・以上。

参考URL:
http://msdn2.microsoft.com/En-US/library/aa385473.aspx
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・InternetReadFile() API関数で HTML ソースを取得できます。  この関数の使用例は次の過去質問を参考にして下さい。  http://oshiete1.goo.ne.jp/qa2630445.html→『InternetReadFileで大きいファイルが読み取れない』  ↑  ここに載せています。→回答者 No.2、No.3 を参考に。 ・なお、ファイルへ保存しなくてもメモリ内に HTML ソースを取得してメモリ上で URL アドレスを  抽出するようにしても良いでしょう。ただし、巨大な HTML ソース(1MB以上)の場合は別の方法で  分割取得します。このときは一時ファイルに保存して、そのファイルを処理するなどして下さい。 その他: ・前回の質問『URL抽出』→http://oshiete1.goo.ne.jp/qa3097203.html  の補足アドバイスをします。 ・HTML ソースの中には改行が全くないタイプが存在するため、前回紹介した簡単なサンプルでは  一部、正常に URL を抽出できません。このタイプにも対応するには HTML ソースからタグを  きちんと解読する必要があります。解読といっても文字列の処理ですので『<』~『>』文字の  間がタグの記述だと判断して『A』→『HREF=』文字列を StrStrI() 関数で見つけます。  その後に『=』文字に続く文字列が URL アドレスなのでダブルクォーテーションなどの文字まで  を抽出します。 ・なお、StrStrI() 関数は C言語の strstr() と似た関数ですが、大文字と小文字を区別無く検索  できる便利な関数です。この API 関数を利用するには  (1)#include <shlwapi.h> をインクルードする  (2)shlwapi.lib をインポートする  ↑  これで使用できます。  StrStrI() 関数については→http://nienie.com/~masapico/api_StrStrI.html を参考に。 ・まずは HTML ソースを一時ファイルに保存して、そのファイルから URL アドレスを抽出してみて下さい。 ・以上。

参考URL:
http://oshiete1.goo.ne.jp/qa2630445.html

関連するQ&A