dag*_*da1 9 erlang html-parsing
我是Erlang的新手,作为我学习练习的一部分,我想在Erlang中编写一个HTML解析器.
我想从网页中提取某些值,可能使用模式来描述我想要提取的数据.
任何人都可以向我提供一些关于如何在Erlang中解决这个问题的高级建议吗?
我想我需要将文档转换成一堆标记,可能使用有限状态机来跟踪我在嵌套方面的位置以及我在元素中的位置.
我建议你看一下Mochiweb中包含的那个:
http://github.com/mochi/mochiweb/blob/master/src/mochiweb_html.erl
该parse/1函数可能是您感兴趣的入口点.
如果您打算完成的话,这是一项艰巨的工作。你最好使用 Roberto 建议的那个,但是如果你决定编写自己的项目来熟悉 Erlang,这里有一些建议......
您应该首先决定是要手动编码解析器还是使用leex 和 yecc从语法生成解析器。如果您想学习如何编写惯用的 Erlang,手动编码可能是更好的学习体验。编写解析器是向 Erlang 自我介绍的绝佳方式;函数式编程语言擅长实现解析器。
其次,您应该决定是否要生成类似 DOM 的结构,还是执行类似 SAX 的回调模型(在 Erlang 中称为行为)。如果您选择后者,您可以简单地实现创建 DOM 的行为。
如果您研究行为,您可能还想研究参数化模块。这是一个实验性功能,可以补充行为,允许将不可变状态存储在“模块实例”中。目前尚不清楚这个新功能是否会得到社区的支持。(对于某些人来说,它看起来太OO了)。
另一个优秀的资源是xmerl代码。密切关注它如何确定字符编码并进行相应的解析。HTML(各种标准)的工作方式略有不同,但在读取文件时考虑正确的字符编码非常重要。
同样从 xmerl 中,您可以看到该库如何使用 Erlang 元组构建 DOM。您可能想做类似的事情。
| 归档时间: |
|
| 查看次数: |
3027 次 |
| 最近记录: |