【问题标题】:retrieving basic value from website HtmlAgilityPack从网站 HtmlAgilityPack 检索基本值
【发布时间】:2020-09-21 11:53:26
【问题描述】:

我正在尝试将 HtmlAgilityPack 与 c# 一起使用以访问一个简单的网站 https://socialblade.com/youtube/user/pewdiepie 并读取订阅者数量。我似乎无法解决或在互联网上找到任何有用的东西,请帮助我不想阅读表格或任何东西,只是一个简单的值。

static void Main(string[] args)
    {
        HtmlWeb web = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc = web.Load("https://socialblade.com/youtube/user/pewdiepie");
        HtmlNode thingy = doc.DocumentNode.SelectSingleNode("not sure how to find xpath");

        Console.WriteLine(thingy);
        Console.Read();
    }

【问题讨论】:

  • 您正在尝试使用 HAP,太好了。你能分享如何你是如何使用它以及你卡在哪里?
  • @HansKesting 嗨,我尝试了无数的东西,这只是在保存静态 void Main(string[] args) { HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument 文档 = 新 HtmlAgilityPack.HtmlDocument(); doc = web.Load("socialblade.com/youtube/user/pewdiepie"); HtmlNode thingy = doc.DocumentNode.SelectSingleNode("not sure how to find xpath"); Console.WriteLine(thingy); Console.Read(); }
  • 你熟悉JSquerySelector吗?额外安装Fizzler.Systems.HtmlAgilityPack NuGet 包。将有HtmlNode.QuerySelector() 可以接受JS 查询语法。

标签: c# html web-scraping html-agility-pack


【解决方案1】:

在 Chrome 中查找 XPath 的一种方法(其他浏览器可能具有相同的功能):

  • 右键单击页面中所需的值,选择“检查” - 这将打开该元素上的开发工具
  • 右键单击该 HTML 元素,选择“复制”>“复制为 XPath”

这会将以下内容放在剪贴板上:

//*[@id="YouTubeUserTopInfoBlock"]/div[3]/span[2]

请注意,这可能不是最有效的 XPath。另请注意,有些网站通过 javascript 加载数据,HAP 不会执行。

XPath 的解释:

  • 获取“id”等于“YouTubeUserTopInfoBlock”的任何元素
  • 直接在其下方,获取第三个<div> 元素
  • 直接在其下方,获取第二个<span> 元素

那么你还是需要获取那个选中节点的InnerText才能得到“106M”的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2022-07-10
    • 1970-01-01
    相关资源
    最近更新 更多