如何解析不一致聊天中的HTML表格内容? Discord.NET C#
问题描述:
美好的一天, 我想解析网站表格中的内容。 在网站上有顶级的每周玩家排行榜。并且每周我都要命令最好的20名球员。 现在我有以下代码:如何解析不一致聊天中的HTML表格内容? Discord.NET C#
commands.CreateCommand("weekly")
.Do(async (e) =>
{
WebClient webClient = new WebClient();
string html = webClient.DownloadString("http://combatarms.nexon.net/de/ranking/player");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
foreach (var cell in doc.DocumentNode.SelectNodes("//table[@class='ranking_tbl']/tr/td"))
{
await e.Channel.SendMessage(cell.InnerText);
}
// await e.Channel.SendMessage("test");
});
不过,这并不表明我什么,所以为什么我错了? 更好的一点是,我可以做一个数组(以前有过,但没有工作),我可以说“我只想要第一个<tr>
(#),第二个<tr>
(名称),例如第七个<tr>
(该Clanname)
但我失败,阵列+解析这些TR内容不和谐:/
例如1行中的表是:
<table class="ranking_tbl" summary="">
<colgroup>
<col width="80">
<col width="250">
<col width="100">
<col width="150">
<col width="100">
<col width="100">
<col width="280">
</colgroup>
<thead>
<tr>
<th></th>
<th>Name </th>
<th>Rang </th>
<th>EP </th>
<th>KDR </th>
<th>Land </th>
<th>Clan- </th>
</tr>
</thead>
<tbody>
<tr>
<td class="cell_left">1</td>
<td><a href="/de/profile/player/RADICALIST">RADICALIST</a></td>
<td><img src="http://caimage.nexoneu.com/Rank/rank_51.gif" alt=""></td>
<td>5.219.130</td>
<td>1,46</td>
<td><img src="http://caimage.nexoneu.com/Web_site/Main/img/flag/SI.png" alt=""></td>
<td><a href="/de/clan/profile/Jasmine%20Thompson">Jasmine Thompson</a></td>
</tr>
答
我认为在表中的内容是动态生成的,页面中的一些javascript代码会生成它,但是这个动态内容会在加载后被加载加载文档。 所以,当你下载页面,你不能得到所有的内容。
你可以阅读更多关于它在这里:
htmlagilitypack and dynamic content issue
webclient doesn't download the web page completely
Load dynamically generated HTML Code in WebClient
How to extract dynamic ajax content from a web page
Scraping data dynamically generated by JavaScript in html document using C#
下载的文本不包含值。看一看html变量的内容,你会看到。 –
有td属性:/ – xKushGene
但他们是空的!