• ベストアンサー

【C&C++】指定したURLのWebページからアンカータグを収集

指定したURLのWebページからアンカータグを収集するプログラムを作成したいです。 JavaやPerlならば作成できるのですが、Visual C++で開発しなければならず、この経験がないために本当に困っています。 作りたいものはURLを与えると、そのURLのWebページのHTMLを見て、アンカータグ<a href="...">~</a>を収集して取り出すコンソールプログラムです。 もしソースがあればソースをいただきたいのですが、とにかくいろんな情報をいただきたいです。 よろしくお願いします。

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

  • ベストアンサー
  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

実は昔、作ったことがありますね。 ソースは今、手元にないですが・・・ Socketを作って、port80(HTTPのポート)で接続、 GETだったかなんだかを送る(send)と、もってこれ(recv)ます。 あとはそれを解析。 まぁ、たいして難しくないので、web見ながらやれば出来るでしょう。

参考URL:
http://home.a03.itscom.net/tsuzu/programing/tips34.htm
happygocrazy
質問者

補足

回答と参考Webページをありがとうございます。 一応、URLを指定してHTMLを取ってくるプログラムは見つけたのですが、見つけるのにも結構苦労しました。『猫でもわかるネットワークプログラミング』というのに書いてありました。 アンカータグの解析も結構難しいと感じているですが・・・。Webを調べてIHTMLDocument2とか、innerHTMLなるものなどを見つけたのでこれらを使いたいです・・・。

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.3

WinInetはここで初めて知ったのですが、 MSのページに両者の比較がありました。 WinCEのケースですが、Windows全般に言えることだと思います。 要は、WinInetがWinSockを使っているということで、 より簡易になっているが、機能が限定されているようですね。 お求めのPGMでは、WinInetの方が良いのでは? ただし、WinInetはIE3.0環境が必要のようです。 WinSockは、OSにより使用できるバージョン、DLLが 違います。(#1参照) 要件定義する際に、どの環境をターゲットとするかに より、決定すれば良いのではないですか?

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnce21/htm/cecrypto.asp
happygocrazy
質問者

お礼

再びの回答、ありがとうございます。 参考URLから知識を得ることができました。結局、現状では環境はそれほど影響しないことから、容易なWinInetを選択しました。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 んっと…HTMLはとって来れそうなので、その後の「文字列(HTML)からアンカーエレメントを探し出す」方法を。 Visual C++で、との事ですが。もし.netが使える環境であれば、正規表現クラスが存在していたかと思います。 ですので、正規表現で探し出せばOKかと。 もし正規表現ライブラリが使えない状況であれば…状態遷移プログラムが書ければ比較的簡単なのですが。 googleあたりで、状態遷移とかオートマトンとかって検索すると色々出てくるかと思います。

happygocrazy
質問者

補足

回答ありがとうございます。 いろいろと調べてboostなるものを発見して、このboostの正規表現を使うことにしました。 まだHTMLを取ってくるプログラムと組み合わせていないのですが、正規表現プログラムのほうではアンカーエレメントが取れました。 ところで、HTMLを取ってくる方法を2つ知りました。WinsockとWinInetなんですが、どちらがいいですか? 知っている方がいらっしゃいましたら回答をよろしくお願いします。

関連するQ&A