【发布时间】:2020-02-08 01:26:57
【问题描述】:
我正在设计一个程序,它从网页中读取定向比赛的结果,通过正则表达式提取数据,并对数据进行一些分析。一个典型的页面可以在这里看到:http://obasen.orientering.se/winsplits/online/sv/table.asp?databaseId=67772&categoryId=2 虽然该程序使用 WPF,但 Web 浏览器来自 Windows 窗体:
<WindowsFormsHost Width="390" Margin="0 0 20 0" Height="0">
<wf:WebBrowser x:Name="wb" ScriptErrorsSuppressed="True" DocumentCompleted="Wb_DocumentCompleted"/>
</WindowsFormsHost>
网页内容通过代码获取:
wb.Navigate(address);
string str = wb.DocumentText;
其中地址为上述网址。
上面页面的页面源码比较杂乱,但是如果我们专注于第二个竞争对手(Tobias Gelius),这个竞争对手的第二行页面上的HTML代码是:
<TR id="2_1" onMouseOver="highlight(2,true)" onMouseOut="highlight(2,false)">
<TD class="C1">Snättringe SK</TD>
<TD class="C37"><A title="-0.11">2.07</A></TD><TD class="C23">(1)</TD>
<TD class="C22"><A title="-0.17">5.42</A></TD><TD class="C23">(1)</TD>
<TD class="C21"><A title="+0.45">8.05</A></TD><TD class="C20">(3)</TD>
<TD class="C38"><A title="+1.31">10.53</A></TD><TD class="C39">(6)</TD>
<TD class="C38"><A title="+1.19">12.25</A></TD><TD class="C39">(5)</TD>
<TD class="C21"><A title="+1.17">17.36</A></TD><TD class="C20">(3)</TD>
<TD class="C21"><A title="+0.53">21.17</A></TD><TD class="C20">(3)</TD>
<TD class="C21"><A title="+0.39">27.21</A></TD><TD class="C20">(3)</TD>
<TD class="C21"><A title="+0.01">30.52</A></TD><TD class="C20">(2)</TD>
<TD class="C21"><A title="+0.29">36.32</A></TD><TD class="C20">(2)</TD>
<TD class="C21"><A title="+0.30">37.33</A></TD><TD class="C20">(2)</TD>
<TD class="C5">Snättringe SK</TD></TR>
在控制点的累计运行时间为2.07、5.42、8.05等,比赛中的位置由括号内的数字(1)、(1)、(3)、(6)等给出。
当我用上面的代码阅读页面时,我得到的数据如下:
<TR id=\"2_1\" onMouseOver=\"highlight(2,true)\" onMouseOut=\"highlight(2,false)\">
<TD class=\"C1\">Sn�ttringe SK</TD>
<TD class=\"C22\">2.07</TD>
<TD class=\"C14\">5.42</TD>
<TD class=\"C13\">8.05</TD>
<TD class=\"C23\">10.53</TD>
<TD class=\"C23\">12.25</TD>
<TD class=\"C13\">17.36</TD>
<TD class=\"C13\">21.17</TD>
<TD class=\"C13\">27.21</TD>
<TD class=\"C13\">30.52</TD>
<TD class=\"C13\">36.32</TD>
<TD class=\"C13\">37.33</TD>
<TD class=\"C4\">Sn�ttringe SK</TD></TR>
可以看出很多信息丢失了,尤其是位置值。有没有办法读取这些位置值?
【问题讨论】:
-
只是为了确定:您使用 ui 控件而不是 HttpClient 来获取数据进行处理是否有任何特殊原因? docs.microsoft.com/en-us/dotnet/api/…
-
您好,您能否确认以下解决方案是否有助于解决您的问题,如果是,请单击绿色复选框标记为已解决:) –
标签: c# html wpf webbrowser-control