解析来自mochiweb_html获得的结果(Parsing the result obtained

2019-08-31 18:20发布

我想从解析HTML文件(无XML)的一些内容。

此刻,我检索结构中使用mochiweb_html解析:

1> inets:start().
2> {ok, {Status, Headers, Body}} = httpc:request("http://www.google.com").
3> {String, Attributes, Other} = mochiweb_html:parse(Body).

其结果是这样的:

{<<"html">>,
 [{<<"itemscope">>,<<"itemscope">>},
  {<<"itemtype">>,<<"http://schema.org/WebPage">>}],
 [{<<"head">>,[],
   [{<<"meta">>,
     [{<<"itemprop">>,<<"image">>},
      {<<"content">>,<<"/images/google_favicon_128.png">>}],
     []},
    {<<"title">>,[],[<<"Google">>]},
....

什么是从mochiweb_http在网页中有一个特定的类别(例如,特定标签的所有元素得到的结构检索的最佳方式<span id="footer">

Answer 1:

你可以使用mochiweb_xpath :

> mochiweb_xpath:execute("//span[@id='footer']",
    mochiweb_html:parse(
      "<html><body><span>not this one</span><span id='footer'>but this one</span></body></html>")).
[{<<"span">>,
  [{<<"id">>,<<"footer">>}],
  [<<"but this one">>]}]


Answer 2:

这取决于你的性能要求。

所述受Mochiweb结果是一个3元组形式很可能相当容易地被转换成输入适于xmerl 。 大部分的工作是将属性名称映射到原子。 然后,你可以使用xmerl_xpath做一些非常灵活查询。

否则,你可以编写一些不太灵活(但也许更快)遍历树。



文章来源: Parsing the result obtained from mochiweb_html