【问题标题】:C# How I can retrieve this information?C# 我如何检索这些信息?
【发布时间】:2012-09-10 17:47:30
【问题描述】:

在 HTML 页面上我有类似的东西

<table class="information">
<tbody>
<tr>
<td class="name">Name:</td>
<td><a href="example.com">John</a></td>
</tr>
<tr>
<td>...</td>
<td>...</td>
</tr>
....
</tbody>
</table>

如何检索姓名(还有其他信息,但在我的示例中我只写了姓名)?

注意:HTML 有多个表格

我试过了

foreach (HtmlElement item in wb.Document.GetElementsByTagName("table"))
{
    if (item.OuterHtml.Contains("information"))
    {
        ... //Here i don't know how to continue
    }
} 

【问题讨论】:

  • +1 用于 HTML 敏捷包。下面它使用 XPath 来查询 HTML 文档。

标签: c# html winforms


【解决方案1】:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var table = doc.DocumentNode.SelectSingleNode("//table[@class='information']");
var td = table.SelectSingleNode("//td[@class='name']");

Console.WriteLine(td.InnerText);

var text = doc.DocumentNode.Descendants("td")
    .First(td => td.Attributes["class"] != null && td.Attributes["class"].Value == "name")
    .InnerText;

【讨论】:

  • 你能帮我安装吗?当我解压缩它时,我有这些文件夹.. Net20、Net40、Net40-client、Net45、sl3-wp、sl4、sl4-windowsphone71、sl5 和 winrt45.... 使用哪一个来添加它作为参考?
  • @Alkis 选择您要参考的平台。就是这样。
【解决方案2】:
HtmlElementCollection tData = wb.Document.GetElementsByTagName("td");

                foreach (HtmlElement td in tData)
                {
                    string name = "";
                    if (td.GetAttribute("classname") == "name")
                    {
                        name = td.InnerText;
                    }
                }

【讨论】:

  • Rosana 这正是我所需要的,但有一个问题。您的回答将给出结果“名称:”但我希望结果为“约翰”...我尝试修改它并编写td.NextSibling.InnerText 取下一个元素的内部文本但有错误
  • 那就这样试试吧——先找到这个表格控件用和上面一样的方法。然后遍历
    控件并查找 作为您的示例,在 标记内只有一个 标记。这样您就可以轻松获取数据。
【解决方案3】:

查看HtmlAgilityPack - 它是免费且非常好的库,可用于处理 html 源代码。

【讨论】:

  • HtmlAgilityPack 很酷,但我更喜欢 ScrapySharp (nuget.org/packages/ScrapySharp)。它基于 HtmlAgilityPack 构建,但也提供 CSS 选择器支持。
  • 如何安装它们?如何使用它们?
  • 从上面的页面下载二进制文件。将它们添加到引用中。使用方法:查看文档。
  • 我找不到任何有关 scrapysharp 的文档?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多