我想从一个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">)的所有元素的最佳方法是什么?
发布于 2013-04-23 17:57:10
您可以使用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">>]}]发布于 2013-04-23 03:40:32
这取决于您的性能要求。
mochiweb结果是一个3元组形式,可以很容易地将其转换为适合xmerl的输入。大部分工作将是将属性名称转换为原子。然后,您可以使用xmerl_xpath进行一些非常灵活的查询。
否则,您可以编写一些灵活性较差(但可能更快)的代码来遍历树。
https://stackoverflow.com/questions/16148202
复制相似问题