• 締切済み

BCBで使えるHTMLパーサー、リンクの抽出

Borland C++Builderで使えるHTMLパーサーのVCLを探しています。海外では、THTMLParserなどを検索語にして調べると幾つかありましたが日本語が文字化けしたりして、調子よくありません。 http://www.dallas.net/~richardp/delphi/components/home.html 日本語の通るフリーのHTMLパーサーのVCLというのはご存知でしょうか。 また、実際にやりたいのは、ページから、 ・<TITLE>タグで囲まれたタイトルの抽出 ・<A HREF = URL>リンク文字列</A>  の、URL部分とリンク文字列のリストを得る ということなのですが、私の拙い知識では何度やってもうまく取り出すことができません。それでVCLでできないかなあと調子の良いことを考えています。こういった文字列解析の定石のようなコーディングはあるのでしょうか。 質問ばかりですみません。ご存知の方よろしくお願いいたします。

みんなの回答

  • bir
  • ベストアンサー率44% (11/25)
回答No.1

私も似たようなものを探していました。 VCLではありませんが、ANSI C++/ライブラリで書かれているHTMLパーサライブラリがデジリニアのページで公開されているのでご参考にされてはいかがでしょう。 私もダウンロードしただけでまだ試していないため何ができるのかまでは把握しておりません。すいません(^_^; URLのページのダウンロードのところにあります。

参考URL:
http://www.midl.co.jp/
Blogger
質問者

お礼

ご紹介ありがとうございました。 それからいろいろ苦労しましたが結局、パーサを自作して目的を遂げました。CppWebBrowserにQueryInterfaceしてiHTMLDocument2オブジェクトからソースを取り出すという方法もその後見つけました。しかし、BCBでCOM操作は複雑になりがちでまだ勉強中です。

関連するQ&A

  • RubyのHTMLパーサーで複数のタグを抽出したい

    現在、Rubyを用いて あるWebページから特定のタグの要素を抽出して テキストデータに出力したいと思い、プログラムを書いているのですが、 途中で行き詰ってしまいました。 ちなみにHpricotやNokogiriといったHTMLパーサーを試してみました。 パーサーを使うのは初めてです。 例えば以下のようにHTML文書に抽出したい部分がDIVタグとPタグに囲まれていた場合、 ===================================== ・・・ <div class="content"> <div class="header">不要部分</div> <div class="title">抽出したい文字列1</div> <div class="subtitle">抽出したい文字列2</div> <div class="subtitle">抽出したい文字列3</div> <p class="paragraph">抽出したい文字列4</p> <p class="paragraph">抽出したい文字列5</p> <div class="comment">抽出したい文字列6</div> <div class="footer">不要部分</div> </div> ・・・ ===================================== このHTMLからまずは 抽出したい文字列1 抽出したい文字列2 抽出したい文字列3 抽出したい文字列4 抽出したい文字列5 抽出したい文字列6 といった出力が得たいのです。 プログラムも書いてみました。 ===================================== #ドキュメント全体を取得(dataにはHTMLの文字列が入っている) html = Hpricot(data) #内容部分(contentクラスのdiv)を取得(CSSセレクタで記述) content = html/"div.content" ===================================== ここまでは良いのですが、 そのあと、div要素を取り出すだけであれば headerクラスと、footerクラスを抽出しないように ===================================== (content/"div:not(.header):not(.footer)").each{ |line| puts line.inner_html } ===================================== とすることで、 抽出したい文字列1 抽出したい文字列2 抽出したい文字列3 抽出したい文字列6 が得られますが、pタグをカンマでdivの前に追加して ===================================== (content/"p,div:not(.header):not(.footer)").each{ |line| puts line.inner_html } ===================================== のようにすると、 抽出したい文字列4 抽出したい文字列5 抽出したい文字列1 抽出したい文字列2 抽出したい文字列3 抽出したい文字列6 のように出力されます。 同様にdivの後にpを追加し ===================================== (content/"div:not(.header):not(.footer),p").each{ |line| puts line.inner_text } ===================================== のようにすると 抽出したい文字列1 抽出したい文字列2 抽出したい文字列3 抽出したい文字列6 抽出したい文字列4 抽出したい文字列5 のようになってしまいます。 つまり、複数のタグを指定すると、指定した順序で抽出されるようです。 代わりに子供すべてを列挙するchildのようなものがあるかと、調べてみたのですが、 どうやらそのような書き方はないようです。 複数のタグを含む場合にはHTMLパーサーでは解析できないのでしょうか。 パーサーは抽出時に順番を保証はしてくれないのでしょうか。 あきらめて、正規表現で抽出しようと思いましたが、 ===================================== <div class="comment"> <div class="comment_header">ごちゃごちゃ</div> <div class="comment_body">抽出したい要素6</div> </div> ===================================== などDIVが入れ子となっている場合に、 非常にややこしく感じたので お手上げ状態です。 どのように、解決できるでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • パーサーに関する良本

    計算式の文字列を外部から渡し、計算結果を返すプログラムを作ろうとしています。 色々調べた結果、パーサーという物があることが分かったのですが、 使い方が分りません。 日本語での良い本(サイト)があれば、教えてください。

  • デルファイ5ProでのRichEditコンポーネントのリンクの仕方

    お世話になっております。 この度Delphi5PROでソフトを作成しているのですが、 RichEditコンポーネントに文字を入力し、http://などから始まるURL文字列が表示されたら、それにリンクを貼るということをしたいと思ったのですが、 それは可能なのでしょうか? 文字列は、他ソフトのチャットのログを読み込んでURLをみつけて・・・というやり方で表示させようと思っています。 文字列にURLのリンクをつける方法をどなたかわかる方が居ましたら、ご教授願います。 よろしくお願いします。

  • HTMLタグ内文字を抽出するには

    HTMLタグ内の特定<title>タグ内文字列のみをエクセルマクロで抽出する方法はありますか? またエクセルのURL一覧の横に結果を表示させたいです。 宜しくお願い致します。

  • 「リンク」について(O.E使用)

    「リンク」について(O.E使用)なんですが。 「テキスト形式」と「HTML形式」がありますが、 この場合、URLで、リンクを貼りたい場合、 ・「テキスト形式」だと、単にURLアドレスを記入すると 自分あてに返信確認してみたところ、 「青色の文字」となり、リンクが貼れてました。 ・「HTML形式」だと、単にる「文字列」で、黒色の文字で、リンクされてませんでした。 「HTML形式」の場合は、やっぱ、「ハイパーリンク」のアイコンを選択して URLアドレスを入力してやらなければ、だめなんでしょうか? 要は、「HP作成ソフト」のように、やるってことですか? たぶん、そうなんだろうな・・・と思うのですが、 確認みたいな質問ですが、よろしく、お願いします。

  • PHP URL→HTML→取得→RSS出力

    PHP URL指定→HTMLソース→指定タグ要素取得(複数)→RSS(.xml)出力について URLからHTMLソースを取得し、要素を取得しRSSファイルを作りたいと思っています。 例えば、http://shopping.yahoo.co.jp/ranking/のURLのHTMLソース内から <p class="elPhoto"> <a href="○○○.html"> <img src="【取得したい文字列1】" width="200" height="200" alt="○○○"> </a> </p> <h4 class="elTitle"> <a href="【取得したい文字列2】">【取得したい文字列3】</a> </h4> <h4 class="elPrice"> <span>【取得したい文字列4】</span>円 </h4> <p class="elSellStatus"></p> <h4 class="elStore"> ストア:<a href="【取得したい文字列5】">【取得したい文字列6】</a> </h4> など指定する各要素を全件取得し、 <item> <title>【取得したい文字列3】</title> <link>【取得したい文字列2】</link> <description> 【取得したい文字列1】<br> 【取得したい文字列4】<br> 【取得したい文字列6】<br> 【取得したい文字列5】 </description> </item> などとRSSで全件出力し、xmlファイルを作成したいです。 アドバイス、ご指導お願いします。

    • 締切済み
    • PHP
  • リンクの張り方の違い

    回答本文にURLを貼り付けて有る回答がありますが、この中でリンクが張られている場合と 単に文字列にしかなっていないものがありますがどうやったら文字列ではなくリンクが張れ るのでしょうか

  • URLに自動的にリンクをはってHTMLにできるエディタとかソフト探してます

    同一のパターンが延々と続く膨大なMSワードの資料があります。 まずサイトのタイトルがあって、次の行にURLが記載されています。 (それが2000セットくらい続きます。) で、その記載されただけでリンクは貼られていないURLから、 実際にリンクを貼って、それをHTMLファイルとして保存する、 という、手作業だとまちがいなく腱鞘炎になるであろう作業に 迫られています。 そこで、たとえばwww.~を自動的にURLと認識してくれて、自動的 にリンクを貼ってくれるエディター(ウェブにアップしなければ ならないのでHTML化できないとだめなのですが)とかソフトがあ りましたら、教えていただけないでしょうか。 もちろん、そのほかでも賢者のアイデアがあれば、、、。 どうぞよろしくお願いいたします。

  • HTML で記述された索引の並べ替え

    HTML で記述された索引があります。 単に、<a href="***.htm"> と </a> に囲まれて文字列が並んでいるだけのもので、リンクをクリックすると索引語ごとのファイルにジャンプするものです。 この索引を、文字列の前後のタグごと50音順に並べ替える簡単な方法はないでしょうか?

  • ラベル内の文字列にHTMLリンクを張る

    初心者質問ですみません。 フォームにラベルを貼り付け、ラベルのキャプションで設定した 一部の文字列にホームページのアドレスがあるのですが、そこの 部分をHTMLのリンクを張りたいのですが、どのようにすれば よろしいのでしょうか? VBのバージョンは6です。