Я пытаюсь проанализировать некоторые данные из некоторого HTML, используя гибкость HTML. Вот как выглядят данные со многими строками таблицы:
<tr>
<td><a href="showindex.cfm"><span class="style1">companies</span></a></td>
<td><b>71</b></td>
</tr>
<tr>
<td>
<font><b><a href="showindex.cfm">political situation</a></b></font></td>
<td><b>76</b></td>
</tr>
<tr>
<td><p title=" This is the political stability data;Score: 0.01;Sene:">
<a href="showdatatable.cfm">political stability denge</a></p></td>
<td> 7</td>
</tr>
<tr>
<td><p title="This index combines policies.;Score: -0.34;Sene:">
<a href="showdatatable.cfm">local government support</a></p></td>
<td> 8</td>
</tr>
<tr>
<td><p title="This combines legal situation data;Score: 3.59;Sene:">
<a href="showdatatable.cfm">legal situation</a></p></td>
<td > 9</td>
</tr>
Я сделал последовательность внешних тегов "td".
Меня интересует следующее: для каждой строки извлечения таблицы
1 - если есть тег "p", это атрибут title
2-Внутренний текст "а"
3- Внутренний текст последних тегов "td". и делая их кортежем,
как
(" This is the political stability data;Score: 0.01;Sene:", "companies", "71");
Сначала я делаю каждые два тега "td" кортежем (мой метод может быть очень грубым извините за это), а затем извлекаю данные, которые меня интересуют.
Это как мой код
tdSeq:seq<HtmlNode>
tdSeq
|>Seq.pairwise
|>Seq.mapi(fun int item -> (int, item))
|>Seq.filter(fun (no, _) -> no%2 = 0)
|>List.ofSeq
|>List.map(fun (no, item ) -> item)
|>List.map(fun (a, b) ->
let data = a.InnerText.Trim()
let value= b.InnerText.Trim()
let title=
let p= a.SelectSingleNode("//p" )
if p.Attributes.["title"] <> null then
p.Attributes.["title"].Value
else
""
(title, data, value))
Моя проблема заключается в том, что для каждого кортежа возвращается только заголовок первого тега "p".
Есть намеки?