我试图使用HTML Agility Pack在Google上查找特定关键字,然后检查链接的节点,直到找到我的网站字符串url,然后解析我为Google提供的节点的innerHTML排行。Agility Pack XPath问题
我对Agility Pack比较陌生(就像昨天我开始真的看过它一样),所以我希望我可以得到一些帮助。当我在下面进行搜索时,每次都会在我的Xpath查询中遇到失败。即使我插入一些像SelectNodes(“// * [@ id ='rso']”)那样简单的东西。这是我做错了吗?
private void GoogleScrape(string url)
{
string[] keys = keywordBox.Text.Split(',');
for (int i = 0; i < keys.Count(); i++)
{
var raw = "http://www.google.com/search?num=100&q=";
string search = raw + HttpUtility.UrlEncode(keys[i]);
var webGet = new HtmlWeb();
var document = webGet.Load(search);
loadtimeBox.Text = webGet.RequestDuration.ToString();
var ranking = document.DocumentNode.SelectNodes("//*[@id='rso']");
if (ranking != null)
{
googleBox.Text = "Something";
}
else
{
googleBox.Text = "Fail";
}
}
}
你得到了什么类型的“失败”? – alexn 2011-06-10 18:38:03
在.//*[@id='rso']标记下查找内容时,var排名总是返回null,这就是所有搜索结果在页面返回时都没有多个结果。 .//*[@id='resultStats']返回“Something”,但其他标签中的确切等效项不会返回 – Danejir 2011-06-10 18:44:24
另外,我可以使用Regex表达式来查找相同的“节点”,所以我知道它们显示为那里并且应该可以在Xpath方向找到,它只是没有返回结果 – Danejir 2011-06-10 19:34:02