F#HtmlProvider到HtmlNode

时间:2017-02-14 09:48:36

标签: f#

我可以找到HtmlProvider的特定行。

是否可以从HtmlProvider.Tables.Row获取另一个HTML信息?

type Provider = HtmlProvider<"
<table><tbody>
 <tr><td class=\"orange\" >something2</td><td>20.1</td></tr>
 <tr><td class=\"grean\" >something</td><td>23.5</td></tr>
 <tr><td class=\"orange\" >something3</td><td>20.0</td></tr>
</tbody></table>">// backslashes are for escaping

let wantedRow = Provider.GetSample().Tables.Table1.Rows 
                |> Seq.filter (fun c->if float (c.Column2)=20.0 then true else false)
                |> Seq.head

现在我有wantedRow并且可以提取something3字符串。

但我需要获得该行的classorange)。

伪代码编写的内容(GetHtml是伪...):

(*Pseudo code warning *)
let tdTag= wantedRow.GetHtml.Descendants["td"] |>Seq.head 
let classStr = tdOfWantedRow.AttributeValue ("class")  //orange

是否可以轻松获取此类信息HtmlProvider

1 个答案:

答案 0 :(得分:3)

Tables的{​​{1}}功能将表视为数据,丢弃html属性。要获得HTML本身,您可以将其视为HTML文档:

HtmlProvider

(当然,在现实世界的例子中,如果节点不存在或者浮点数不能解析,你会想要一些保护措施,但这应该让你朝着正确的方向前进)