相关疑难解决方法(0)

Xpath:选择包含类AND的div,其特定子元素包含文本

这个SO问题的帮助下,我有一个几乎工作的xpath:

//div[contains(@class, 'measure-tab') and contains(., 'someText')]
Run Code Online (Sandbox Code Playgroud)

然而,这有两个divs:一个是孩子td有一些文本,另一个是孩子span.

如何将其缩小到与span

<div class="measure-tab">
  <!-- table html omitted -->
  <td> someText</td>
</div>

<div class="measure-tab">  <-- I want to select this div (and use contains @class)
  <div>
    <span> someText</span>  <-- that contains a deeply nested span with this text
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

xpath

25
推荐指数
3
解决办法
8万
查看次数

HTMLAgilityPack中的XPath select不能按预期工作

我正在用C#编写简单的屏幕抓取程序,为此我需要选择所有输入放在一个名为"aspnetForm"的表单中(页面上有2个表单,我不希望输入来自另一个),以及此表单中的所有输入都放在不同的表格,div中,或者只放在此表单的第一个子级别.

所以我写了非常简单的XPath查询:

//form[@id='aspnetForm']//input
Run Code Online (Sandbox Code Playgroud)

它在我测试的所有浏览器(Chrome,IE,Firefox)中按预期工作 - 它返回我想要的内容.

但是在HTMLAgilityPack中根本不起作用 - SelectNodes总是返回NULL.

我为测试编写的查询工作正常,但不返回我想要的.首先选择作为我的表单的第一个孩子的所有输入,然后选择返回的表单:

//form[@id='aspnetForm']/input
//form[@id='aspnetForm']
Run Code Online (Sandbox Code Playgroud)

是的,我知道我可以枚举上次查询的节点,或者在其结果上创建另一个SelectNodes,但我真的不想这样做.我想在浏览器中使用相同的查询.

XPath目前在HTMLAgilityPack中被破坏了吗?C#有任何替代的XPath实现吗?

更新:测试代码:

using HtmlAgilityPack;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace HtmlAGPTests
{
    [TestClass]
    public class XPathTests
    {
        private const string html =
                "<form id=\"aspnetForm\">" +
                "<input name=\"first\" value=\"first\" />" +
                "<div>" +
                    "<input name=\"second\" value=\"second\" />" +
                "</div>" +
                "</form>";

        private static HtmlNode GetHtmlDocumentNode()
        {
            var document = new HtmlDocument();
            document.LoadHtml(html);
            return document.DocumentNode;
        }

        [TestMethod]
        public void TwoLevelXpathTest()     // fail - nodes is NULL actually.
        {
            var query = …
Run Code Online (Sandbox Code Playgroud)

c# xpath screen-scraping

5
推荐指数
1
解决办法
3076
查看次数

标签 统计

xpath ×2

c# ×1

screen-scraping ×1