[英]F# HtmlProvider to HtmlNode
我可以找到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
字符串。
但我需要獲得該行的class
( orange
)。
像偽代碼一樣寫的東西( GetHtml
是偽...):
(*Pseudo code warning *)
let tdTag= wantedRow.GetHtml.Descendants["td"] |>Seq.head
let classStr = tdOfWantedRow.AttributeValue ("class") //orange
是否可以輕松獲取HtmlProvider
此類信息?
HtmlProvider
的Tables
功能將表視為數據,丟棄html屬性。 要獲得HTML本身,您可以將其視為HTML文檔:
let wantedRow = Provider.GetSample().Html.Descendants("tr")
|> Seq.filter (fun x -> float((x.Descendants("td") |> Seq.item 1).InnerText()) = float(20.0))
|> Seq.head
let cssClass = (wantedRow.Descendants() |> Seq.head).Attribute("class").Value()
printf "%s\n" cssClass
// prints "orange"
(當然,在現實世界的例子中,如果節點不存在或者浮點數不解析,你會想要一些保護措施,但這應該讓你朝着正確的方向前進)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.