我需要从这个Site中提取突出显示的文本我正在使用下面的代码,并且没有将Object引用的错误设置为对象的实例。我也在指南中使用这个Guide,它说使用Xpath表达式。我转到我想要的行,然后右键单击=> copy =>复制xpath。我得到// [@ id =“profile”] / div 2 / div 2 / div 1 / div 1 / div 1 / div 1 / div / text()“);我必须转义引号。如果我只是做”// [@ id =“profile”]“那么它工作正常我得到个人资料,但我不能让这个工作并得到统计数据。
编辑:我需要的是获得排名值。但我不能简单地称之为一级,因为排名用于Solo,FPP Solo,等等。但我现在试图让他获得“1,510,890”号码。
[Command("test")]
[Alias("ti")]
public async Task Stats(string name)
{
string path = "https://pubgtracker.com/profile/pc/" + name + "?region=agg";
HtmlWeb web = new HtmlWeb();
HtmlDocument Doc = web.Load(path);
var htmlNodes = Doc.DocumentNode
.SelectNodes("//*[@id=\"profile\"]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div/text()");
foreach (var node in htmlNodes)
{
foreach (var att in node.Attributes)
{
Console.WriteLine(att.Value);
}
}
}
答案 0 :(得分:1)
编辑:我之前的回答已不再有效,请阅读下面我的新发现。
我不认为你现在想做什么是可能的。
似乎在加载HTML之后加载显示您的Solo排名(以及大量其他数据)的数据(意味着浏览器中的javascript在下载html后处理一些数据绑定)。 / p>
您可以通过两种方式自行测试:
将调试器放在代码中的HtmlDocument Doc = web.Load(path);
行,并检查Doc.DocumentNode.InnerHtml
的值,将其复制并粘贴到Notepad ++或其他文本编辑器中,然后查看那里的数据。你会发现你的等级没有被服务器加载(即它在源HTML中不可用)
不是在Chrome中检查页面上的元素,而是右键单击“查看源”。这与HtmlAgilityPack将HTML“加载”到对象中时看到的数据相同。它不允许运行javascript(意味着您的值永远不会绑定到任何HTML)。
我能看到的 方式来收集所需的数据是从服务器获取源代码中嵌入的javascript对象。您将在<script>
标记的文档末尾看到它。它是一个巨型 javscript对象,其中包含你的等级。
你可以通过查看我上面解释的来源,并为你的等级做一个Ctrl + F来自己看到这个。您将看到它出现在对象的两个位置。