C# HTML Agility Pack无法从div获取文本内容

C# HTML Agility Pack无法从div获取文本内容,c#,html,web-scraping,html-agility-pack,C#,Html,Web Scraping,Html Agility Pack,我是C#的新手,想尝试用它做一个小刮刀来尝试一些东西。我在上面看到了YT的视频。我正试图抓取bet365.dk(更具体地说是这个链接:) 这是我的代码: using System; using System.Net.Http; using HtmlAgilityPack; namespace Bet365Scraper { class Program { static void Main(string[] args) { G

我是C#的新手,想尝试用它做一个小刮刀来尝试一些东西。我在上面看到了YT的视频。我正试图抓取bet365.dk(更具体地说是这个链接:)

这是我的代码:

using System;
using System.Net.Http;
using HtmlAgilityPack;

namespace Bet365Scraper
{
    class Program
    {
        static void Main(string[] args)
        {
           GetHtmlAsync();
           Console.ReadLine();
        }

        private static async void GetHtmlAsync()
        {
            var url = "https://www.bet365.dk/#/AC/B1/C1/D451/F2/Q1/F^12/";

            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36");
            var html = await httpClient.GetStringAsync(url);

            var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(html);

            var htmlBody = htmlDocument.DocumentNode.SelectSingleNode("//body");
            var node = htmlBody.Element("//div[@class='src-ParticipantFixtureDetailsHigher_TeamNames ']");

            Console.WriteLine(node.InnerHtml);
        }

    }
}
我不知道该怎么做。我发现HTML Agilty Pack网站上的文档有点混乱,而且我似乎找不到我想要的东西。这是我想做的。bet365网站上的这一小部分HTML:

<div class="src-ParticipantFixtureDetailsHigher_TeamNames">
    <div class="src-ParticipantFixtureDetailsHigher_TeamWrapper ">
       <div class="src-ParticipantFixtureDetailsHigher_Team " style="">Færøerne</div>
    </div>
    <div class="src-ParticipantFixtureDetailsHigher_TeamWrapper ">
        <div class="src-ParticipantFixtureDetailsHigher_Team ">Andorra</div>
    </div>
</div>

弗罗恩
安道尔

我怎么能一次打印出divs中的“Færørne”和“andror”?我知道这个事实,我可能需要使用foreach,但正如前面所说的,我不太确定如何使用选择器等等。

我不熟悉XPath,但我知道JS查询语法,建议另外安装
Fizzler.Systems.HtmlAgilityPack
NuGet包

然后
HtmlNode.QuerySelector()
方法将可用。它接受JavaScript查询语法

我还修复了HttpClient的用法

namespace Bet365Scraper
{
班级计划
{
私有静态只读HttpClient HttpClient=新HttpClient();
静态异步任务主(字符串[]args)
{
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/86.0.4240.75 Safari/537.36”);
等待GetHtmlAsync(“https://www.bet365.dk/#/AC/B1/C1/D451/F2/Q1/F^12/");
Console.ReadLine();
}
私有静态异步任务GetHtmlAsync(字符串url)
{
var html=await httpClient.GetStringAsync(url);
var htmlDocument=新的htmlDocument();
htmlDocument.LoadHtml(html);
var nodes=htmlDocument.DocumentNode.queryselectoral(“.src-ParticipantFixtureDetailsHigher_团队”);
foreach(节点中的HtmlNode节点)
{
Console.WriteLine(node.InnerText);
}
}
}
}

我不熟悉XPath,但我知道JS查询语法,建议另外安装
Fizzler.Systems.HtmlAgilityPack
NuGet包

然后
HtmlNode.QuerySelector()
方法将可用。它接受JavaScript查询语法

我还修复了HttpClient的用法

namespace Bet365Scraper
{
班级计划
{
私有静态只读HttpClient HttpClient=新HttpClient();
静态异步任务主(字符串[]args)
{
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/86.0.4240.75 Safari/537.36”);
等待GetHtmlAsync(“https://www.bet365.dk/#/AC/B1/C1/D451/F2/Q1/F^12/");
Console.ReadLine();
}
私有静态异步任务GetHtmlAsync(字符串url)
{
var html=await httpClient.GetStringAsync(url);
var htmlDocument=新的htmlDocument();
htmlDocument.LoadHtml(html);
var nodes=htmlDocument.DocumentNode.queryselectoral(“.src-ParticipantFixtureDetailsHigher_团队”);
foreach(节点中的HtmlNode节点)
{
Console.WriteLine(node.InnerText);
}
}
}
}

您是否熟悉JavaScript
querySelector
或jQuery语法?@aepot一点。为什么?回答如下:)你熟悉JavaScript
querySelector
或jQuery语法吗?@aepot一点。为什么?回答如下:)这就是你的意思,对:@KPsanz-yep.)实际上,我在网络日志中找到了外部html文件,它是:然而,该站点似乎使用了一些非常令人困惑的格式。它甚至不像我以前见过的东西。你知道这种格式是什么吗?@KPsanz我没有访问链接的权限,请稍后再试screenshot@KPsanz我不知道,格式是什么,但它是文本。您可以将其加载到
字符串中并进行解析。这就是您的意思,对:@KPsanz yesp.)实际上,我在网络日志中找到了外部html文件,它是:然而,该站点似乎使用了一些非常令人困惑的格式。它甚至不像我以前见过的东西。你知道这种格式是什么吗?@KPsanz我没有访问链接的权限,请稍后再试screenshot@KPsanz我不知道,格式是什么,但它是文本。您可以将其加载到
字符串中
并进行解析。