DocumentNode.SelectNodes returns 空 - HtmlAgilityPack
DocumentNode.SelectNodes returns null - HtmlAgilityPack
我想获取存储在 Html 源代码的 span 标签中的不同电影的 IMDB 评级。为此,我尝试使用 Html 解析从 HTML span 标签收集数据。一切正常,直到调用 DocumentNode 的 SelectNodes() 方法返回 null。
我知道这个问题以前被问过很多次,但尽管进行了大量研究并尝试了不同的解决方案,但我似乎无法弄清楚我的代码有什么问题。为了完成我的学期项目,解决这个问题对我来说真的非常重要,因此我们将不胜感激。
谢谢
string url = "https://www.google.com/search?client=opera&q=into+the+wild&sourceid=opera&ie=UTF-8&oe=UTF-8";
StreamReader sourceCode = makeHttpRequest(url);
//makeRequest() returns the html source code of the url
String sourceCodeString = sourceCode.ReadToEnd();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(sourceCodeString);
var itemList = doc.DocumentNode.SelectNodes("//span[@class='_tvg']")
.Select(p => p.InnerText)
.ToList();
这里的重点是设置用户代理。
下面的代码 returns 3 个结果,如果你删除 User-Agent
你会得到一个空值...
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
var html = await client.GetStringAsync("https://www.google.com/search?client=opera&q=into+the+wild&sourceid=opera&ie=UTF-8&oe=UTF-8");
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var result = doc.DocumentNode
.SelectNodes("//span[@class='_tvg']")
.Select(p => p.InnerText)
.ToList();
}
我想获取存储在 Html 源代码的 span 标签中的不同电影的 IMDB 评级。为此,我尝试使用 Html 解析从 HTML span 标签收集数据。一切正常,直到调用 DocumentNode 的 SelectNodes() 方法返回 null。
我知道这个问题以前被问过很多次,但尽管进行了大量研究并尝试了不同的解决方案,但我似乎无法弄清楚我的代码有什么问题。为了完成我的学期项目,解决这个问题对我来说真的非常重要,因此我们将不胜感激。 谢谢
string url = "https://www.google.com/search?client=opera&q=into+the+wild&sourceid=opera&ie=UTF-8&oe=UTF-8";
StreamReader sourceCode = makeHttpRequest(url);
//makeRequest() returns the html source code of the url
String sourceCodeString = sourceCode.ReadToEnd();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(sourceCodeString);
var itemList = doc.DocumentNode.SelectNodes("//span[@class='_tvg']")
.Select(p => p.InnerText)
.ToList();
这里的重点是设置用户代理。
下面的代码 returns 3 个结果,如果你删除 User-Agent
你会得到一个空值...
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
var html = await client.GetStringAsync("https://www.google.com/search?client=opera&q=into+the+wild&sourceid=opera&ie=UTF-8&oe=UTF-8");
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var result = doc.DocumentNode
.SelectNodes("//span[@class='_tvg']")
.Select(p => p.InnerText)
.ToList();
}