我如何使用Xpath找到这个div

时间:2013-05-28 22:52:14

标签: xpath

在这个网址上有我想要的文字

http://www.mefik.co.il/provider.asp?provider_id=10757

我正在寻找班级'big_obj_px_news_page'

尝试了各种xpath选项。

任何帮助?

2 个答案:

答案 0 :(得分:1)

我建议您安装Firefox + Firebug + Firepath来验证您的xpath。你的xpath很接近,但还不够。

//div[@class='big_obj_px_news_page']

// or if this div may have more class names
//div[contains(@class, 'big_obj_px_news_page')]

答案 1 :(得分:0)

我使用以下代码创建了单元测试:

using System;
using System.IO;
using HtmlAgilityPack;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Xml;

namespace HtmlAgilityPackTests
{
    [TestClass]
     public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "\\test.html"));
            var item = doc.DocumentNode.SelectNodes("//*[contains(@class,     'big_obj_px_news_page')]");
            Assert.IsNotNull(item);
        }
    }
}

此测试通过了所提供页面上的确切html。在您编写var item = doc.DocumentNode.SelectNodes(Xpath)的代码中,您是在键入上面的确切xpath字符串,还是在尝试使用xpath对象?

如果您正在使用XPath对象,则可能是您错误地设置了XPath对象。我看到的唯一其他选项是你没有正确加载你的Html。在上面的单元测试代码中,“test.html”包含您提供的页面中的完整html源代码,并且与c#源代码位于同一目录中。在Visual Studio的test.html文件属性窗口中,我将“复制到输出目录”设置为“如果更新则复制”。它的构建动作是“内容”。

也许如果您描述了如何加载HTML,我们可以提供进一步的帮助。