【发布时间】:2015-11-07 06:15:16
【问题描述】:
我正在制作一个程序,从网站获取足球统计数据并存储它。问题是网站在 HTML 代码中存储不同状态的方式没有区别。
来自网站的代码 sn-p:
// First Team
<td style="background-color:#79a6ca;"><!-- --></td>
<td class="t_c" style="border-right:1px #dddddd solid; background-color:#ebf2f7;">2</td>
<td style="padding-left:10px; background-color:#ebf2f7;"><img src="/assets/images/logo/participants/16x16/8113.png" width="16" height="16" border="0" alt="FC Midtjylland" title="FC Midtjylland" /> <a href="/fodboldklubber/fc-midtjylland/" style="font-weight:bold; color:#333;">FC Midtjylland</a></td>
<td class="t_c" style="background-color:#ebf2f7;">14</td>
<td class="t_c" style="background-color:#ebf2f7;">8</td>
<td class="t_c" style="background-color:#ebf2f7;">3</td>
<td class="t_c" style="background-color:#ebf2f7;">3</td>
<td class="t_c" style="border-left:1px #dddddd solid; border-right:1px #dddddd solid; background-color:#ebf2f7;">19 - 10</td>
<td class="t_c" style="font-weight:bold; background-color:#ebf2f7;">27</td>
</tr>
// Second team
<tr data-toggle="tooltip" data-placement="left" title="Europa League kvalifikation">
<td style="background-color:#79a6ca;"><!-- --></td>
<td class="t_c" style="border-right:1px #dddddd solid; background-color:#ebf2f7;">3</td>
<td style="padding-left:10px; background-color:#ebf2f7;"><img src="/assets/images/logo/participants/16x16/8595.png" width="16" height="16" border="0" alt="Brøndby IF" title="Brøndby IF" /> <a href="/fodboldklubber/broendby-if/" style="font-weight:bold; color:#333;">Brøndby IF</a></td>
<td class="t_c" style="background-color:#ebf2f7;">14</td>
<td class="t_c" style="background-color:#ebf2f7;">7</td>
<td class="t_c" style="background-color:#ebf2f7;">3</td>
<td class="t_c" style="background-color:#ebf2f7;">4</td>
<td class="t_c" style="border-left:1px #dddddd solid; border-right:1px #dddddd solid; background-color:#ebf2f7;">24 - 17</td>
<td class="t_c" style="font-weight:bold; background-color:#ebf2f7;">24</td>
</tr>
我正在使用 WebClient 来下载页面并使用 MatchCollection 来搜索所需的模式。 计划是将值写入字符串数组。
我已经尝试了 JStromwick 示例,它有点工作,但它并没有在团队之后停止。它还需要下一个团队。我该如何解决这个问题。可以放柜台吗?
到目前为止我的代码:
string[] superLigaHold = new string[] { "FC Midtjylland", "Brøndby IF" };
for (int i = 0; i < superLigaHold.Length; i++)
{
string teamPattern = "<img src.*? width=\"16\" height=\"16\" border=\"0\" alt=\"" + superLigaHold[i] + "\" title=\"" + superLigaHold[i] + "\" />";
MatchCollection team = Regex.Matches(webPage, teamPattern, RegexOptions.Singleline);
if (team.Count > 0)
{
var gameStats = Regex.Matches(webPage, "<td.+?>(\d+).*");
string gamesTotal = gameStats[0].Groups[1].Value;
string gamesWon = gameStats[1].Groups[1].Value;
string gamesDraw = gameStats[2].Groups[1].Value;
string gamesLost = gameStats[3].Groups[1].Value; }
有人对我如何解决这个问题有任何建议吗?
【问题讨论】:
-
我不是 C# 程序员,但如果你只得到那个 html 而仅此而已,我不知道这是可能的:/.. 这个 html 总是按这个顺序排列吗?
标签: c# html web-scraping