【发布时间】:2017-10-27 23:38:56
【问题描述】:
我正在尝试使用 Haskell 和 Text.XML.Cursor 包解析 HTML 页面。我的目标是返回列表中的第三列值。我花了最后 4 个小时试图让它工作。但是,我似乎无法理解 XPath 和 Text.XML.Cursor 在概念上的工作原理。
所以任务是:
- 在文档的某处找到
<table class="forumTable">标签 - 对于其中的每个
<tr>标签,取第三个<td>标签 - 在单元格内有一个
<a>标签,content我想将其添加到列表中。不是href属性,而是<a>和</a>之间的值
具体来说,我正在解析this link,并尝试获取带有论坛名称的列的值(主题之后的下一个)。
这是我所能得到的。似乎正在返回表格内<a>标签的所有内容
findNodes :: Cursor -> [Cursor]
findNodes = element "table" >=> attributeIs "class" "forumTable" &// element "tr" &/ element "td" &/ element "a" >=> child
extractData = T.concat . content
...
let cursor = fromDocument $ parseLBS $ simpleHTTP "http://www.sql.ru/forum/sqlru-3-days/2"
let lines = cursor $// findNodes &| extractData
我正在寻求解决我的问题以及解释这一切如何运作的方法。谢谢。
【问题讨论】:
标签: html parsing haskell xpath xml-parsing