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,我已经在一些安卓项目中使用过它,而且它非常可靠,我对此没有任何抱怨。

正如 JSoup 网站上的示例所说:

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

您可以使用select()提取所需的任何数据

特别注意选择器,从上面的示例中,您似乎只想要食物名称,因此您可以<a>使用以下方式从标签中获取它们:

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

另一个提示是,在创建 后立即插入断点Document,然后使用 IDE 中的表达式构建器来窥探并找出所需的元素。

于 2012-06-14T17:23:29.810 回答
0

这可能不是最有效的方法,但是如果您将 HTML 源代码放入一个字符串中,然后逐行解析它。每当您在开头打一行时<a href,您就可以检查它,看看它是否是食品(不知道在不知道其余链接的情况下您会如何做到这一点,但可能有不同的结构或其他东西,或者食物可能在链接 7 或其他东西之后开始。网站通常具有可识别的模式)。如果它是食品,则获取链接(用于图像)和名称,或任何您需要的东西。

于 2012-06-14T17:06:16.490 回答
0

很简单:您应该使用JSoup库。

于 2012-06-14T17:09:44.593 回答
0

有(至少)两种合理的方法。

1) 使用真正的 HTML 解析器。(@you786 建议这样做)我最熟悉 Jsoup,但 @CommonsWare 提到了其他一些链接。然后,您有条不紊地浏览 HTML 树以找到您想要的内容。如果 HTML 的格式和结构合理,并且随着时间的推移保持这种格式和结构,这种方法效果最好。

2)只是“飞跃”到你想要的。(@Odiefrom 建议这样做)在您的示例中,搜索(使用 String.indexOf()) for "<a href",然后从那里搜索 for"RN="然后抓取所有文本直到下一个"。这在 HTML 结构中效果最好,但它是一个巨大的混乱,或者您不想费心去弄清楚它。(例如,他们过度使用表格,而您想要的是大约 22 层以下的内容,是的,我已经看到了!),并且如果要搜索的文本对于您的信息来说非常独特和独特。在这种情况下,您可能希望对文本进行一些额外的“健全性检查”。

于 2012-06-14T17:12:32.780 回答