0

ここに問題があります。現在、アプリ画面に表示できるように、いくつかのhtmlを解析する必要があるAndroidアプリを作成しています。

それを適切に行う方法がわからないので、皆さんが私を正しい方向に向けるか、良いガイドを見せてくれるかどうか疑問に思っていました.

私がやりたいことは、html コードを調べて、特定のアイテム (具体的には、すぐに表示される食品アイテム) を取り出すことです。人をウェブサイトにリンクしたり、webview を使用してアプリにウェブページを表示したりしたくないので、個人的には見栄えが悪いと感じています。私がやりたいことは、html から食品を取り出して、その部分を文字列などの形でアプリに配置することです。

-----私が参照用に使用しているサイトのhtmlの一部です------

enter code here

<a href="http://www.campusdish.com/en-US/CSMA/OldDominion/Locations/rda.aspx?RCN=m784&amp;MI=122&amp;RN=CEREAL  HOT  GRITS" OnClick="javascript: NewWindow('http://www.campusdish.com/en-US/CSMA/OldDominion/Locations/rda.aspx?RCN=m784&amp;MI=122&amp;RN=CEREAL  HOT  GRITS', 'RDA_window',  'width=450, height=600, scrollbars=no, toolbar=no,  directories=no, status=no, menubar=no, copyhistory=no');return false" Class="recipeLink">CEREAL  HOT  GRITS</a>

                <br>

              </td>

            </tr>

          </table>

        </div>

      </td>

    </tr>

    <tr>

      <td>

        <div class="menuTxt">

          <table cellpadding="0" cellspacing="0" border="0" bordercolor="green">

            <tr valign="top">

              <td colspan="3">

                <a href="http://www.campusdish.com/en-US/CSMA/OldDominion/Locations/rda.aspx?RCN=m860&amp;MI=122&amp;RN=PANCAKES  BUTTERMILK" OnClick="javascript: NewWindow('http://www.campusdish.com/en-US/CSMA/OldDominion/Locations/rda.aspx?RCN=m860&amp;MI=122&amp;RN=PANCAKES  BUTTERMILK', 'RDA_window',  'width=450, height=600, scrollbars=no, toolbar=no,  directories=no, status=no, menubar=no, copyhistory=no');return false" Class="recipeLink">PANCAKES  BUTTERMILK  </a>

------html終了-------

たとえば、「CEREAL HOT GRITS」と「PANCAKES BUTTERMILK」という単語を抽出したいと思います。

ご協力いただきありがとうございます。

4

4 に答える 4

1

JSoupをお勧めします。いくつかの Android プロジェクトで使用しましたが、非常に信頼性が高く、不満はありません。

例がJSoup Webサイトで言うように:

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");

を使用して、select()必要なデータを引き出すことができます

セレクターに特に注意してください。上記の例から、食べ物の名前が必要なように見えるので、次の<a>ようなものを使用してタグから取得できます。

Elements resultLinks = doc.select("a");

もう 1 つのヒントは、 を作成した直後にブレークポイントにドロップし、DocumentIDE の式ビルダーを使用してスヌープし、必要な要素を見つけ出すことです。

于 2012-06-14T17:23:29.810 に答える
0

(少なくとも)2つの合理的なアプローチがあります。

1)実際のHTMLパーサーを使用します。(@ you786がこれを提案しました)私はJsoupに最も精通していますが、@CommonsWareは他のいくつかへのリンクについて言及しました。次に、HTMLツリーを系統的に調べて、必要なものを見つけます。これは、HTMLが適度に整形式で構造化されており、その形式と構造を長期間保持している場合に最適に機能します。

2)あなたが望むものにただ「飛躍」します。(@Odiefromがこれを提案しました)あなたの例では、を検索し(String.indexOf()を使用)"<a href"、そこから検索し"RN="て、次のまでのすべてのテキストを取得します"。これは、HTML構造が非常に混乱している場合や、わざわざ理解したくない場合に最適に機能します。(たとえば、彼らはテーブルを使いすぎて、あなたが望むものは約22レベル下にあります、はい、私はこれを見ました!)そして検索するテキストがあなたの情報にとって非常に独特でユニークである場合。この場合、テキストの「健全性チェック」を少し追加することをお勧めします。

于 2012-06-14T17:12:32.780 に答える
0

シンプル: JSoupライブラリを使用する必要があります。

于 2012-06-14T17:09:44.593 に答える
0

これは最も効率的な方法ではないかもしれませんが、HTML ソース コードを取得して文字列に入れ、その方法で 1 行ずつ解析するとします。最初にの行にヒットするたびに<a href、それをチェックして、それが食品であるかどうかを確認できます (残りのリンクを知らずにどのように行うかはわかりませんが、おそらく別の構造があります)または何か、または食品アイテムはリンク 7 または何かの後に開始される場合があります。通常、Web サイトには認識可能なパターンがあります)。食品の場合は、リンク (画像) と名前、または必要なものを取得します。

于 2012-06-14T17:06:16.490 に答える