xpath 相关问题

XPath的主要目的是解决XML文档的各个部分。它还提供操纵弦乐,数字和布尔值的基本设施。 XPath使用紧凑的非XML语法。 XPath在XML文档的抽象逻辑结构上运行,而不是表面语法。

在 Google Sheets 上使用 IMPORTXML 提取图像 URL

我在这里多次看到这个问题,但这是非常不同的。其他使用 IMPORTXML 的帮助请求,操作人员询问如何提取标准 HTML 标签,如 a/href/img/src/ul/li 等。哇...

回答 1 投票 0

如何跳过多个子div而不逐个浏览它们

这是我的 dom 结构: 我想从 /td[@class='applicant-row checkin checkins-visible'] 到达 /button,但我不想像这样遍历每个 div “td[@class='申请者行签到

回答 1 投票 0

使用 xpath 读取 ADF 中的响应 xml

我正在尝试对 ADF 中的网络活动进行计数,并将其放入我的跳过变量中。 我收到这个错误: 函数'xpath'参数无效:'xpath'参数必须是受支持的,w...

回答 1 投票 0

在python中找不到selenium中的任何元素

我这样使用驱动程序 进口 ... chrome_options = 选项() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") 驱动程序 = webdriver.Chrome(选项=

回答 1 投票 0

如何在 XPath 3.1 和 XSLT 中构建具有错误处理功能的健壮 XML 解析器

我的用例:我想分析一个大型 XML 文档,其中包含名为ownedComment 的元素。每个元素都有一个称为 body 的属性。该属性的内容应该是一个字符串,

回答 1 投票 0

针对 Chrome 扩展中的动态聊天框

我正在为我的大学项目开发 Chrome 扩展程序,而且我快完成了(大约完成了 90%)。该扩展程序打开 Messenger.com 并导航到特定的聊天链接,但我遇到了问题

回答 1 投票 0

如何使用 Selenium 和 Java 在浏览器自动化中找到准确的文本?

没有了 <div data-ng-if="!newRequestReceived" class="ng-scope"> <!-- ngIf: !authRequestCount --><p data-ng-if="!authRequestCount" class="ng-scope" style="" xpath="1">No more candidates awaiting Authorization</p><!-- end ngIf: !authRequestCount --> <!-- ngIf: authRequestCount --> </div> 我需要帮助, 如果找到类似“No more candidates awaiting Authorization”的字符串 循环将如何工作??? driver.findElement(By.xpath("//p[@class='ng-scope'][contains('No more candidates awaiting Authorization']")); 这是正确的 要提取字符串不再有等待授权的候选人,您不需要这样的循环。由于该元素是 Angular 元素,因此您需要引发 WebDriverWait 并且可以使用以下任一解决方案: CssSelector: String myString = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.ng-scope[data-ng-if*='newRequestReceived'] p.ng-scope[data-ng-if*='authRequestCount']"))).getAttribute("innerHTML"); XPath: String myString = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='ng-scope' and contains(@data-ng-if,'newRequestReceived')]//p[@class='ng-scope' and contains(@data-ng-if,'authRequestCount')]"))).getAttribute("innerHTML");

回答 1 投票 0

如何解决 Selenium 中找不到 XPath 元素的问题?

布尔运行 = true; 同时(运行) { if (nomore.contentEquals(tt)) { driver.navigate().to("https://mettl.com/corporate/live-feed#/

回答 2 投票 0

Tinder Xpath 类似按钮

我正在寻找 https://tinder.com/app/recs 的 Like 按钮的 xpath 应该是这个 /html/body/div[1]/div/div[1]/div/div/div/main/div/div/div[1]/div/div[4]/div/div[4]/button/跨度/跨度/...

回答 1 投票 0

为什么找不到XPath元素?

布尔运行 = true; 同时(运行) { if (nomore.contentEquals(tt)) { driver.navigate().to("https://mettl.com/corporate/live-feed#/

回答 2 投票 0

XSLT 组织列表列表

我正在尝试重新处理列表列表,从 XML 转换为基于 XML 的专有文件格式。 本质上输入是这样的 第 1 项 ... 我正在尝试重新处理列表列表,从 XML 转换为基于 XML 的专有文件格式。 输入本质上是这样的 <ul> <li>Item 1</li> <li><ul><li>Sub item 1</li><li>Sub item 2</li></ul></li> <li>Item 2</li> <li><ul><li>Sub item 3</li><li>Sub item 4</li></ul></li> </ul> 显然看起来像这样: 第 1 项 子项目1子项目2 第 2 项 子项目3子项目4 但我需要将子项目列表放在相同的 li 标签中作为各自的标题。 所以,像这样: 项目 1子项目 1子项目 2 项目 2子项目 3子项目 4 当我测试上面的原始输入时,我似乎无法想出一个 XPATH 来拾取我的第一个子项目ul而不拾取第二个子项目ul。 当通过转换运行它时,这基本上会创建 <ul> <li>Item 1 <ul><li>Sub item 1</li><li>Sub item 2</li></ul> <ul><li>Sub item 3</li><li>Sub item 4</li></ul> </li> <li>Item 2 <ul><li>Sub item 3</li><li>Sub item 4</li></ul> </li> </ul> 让我到目前为止的 XPath 是 following-sibling::li[not(normalize-space(text()))]/*[1][self::ul or self::ol] 归一化空间是隔离一个li,它没有文本,但里面只有ul或ol。我已经尝试了上述的多种变体,设置索引 [1] 只是返回它们全部,[2] 什么也不返回。 我有点困惑,感谢任何意见或建议! 这似乎是一个分组问题,您可以在 XSLT 2 或更高版本(XSLT 的当前版本是 3.0)中使用 for-each-group group-starting-with: 来解决 <xsl:template match="ul[.//ul]"> <xsl:copy> <xsl:for-each-group select="li" group-starting-with="li[not(ul)]"> <xsl:copy> <xsl:apply-templates select="node(), tail(current-group())/*"/> </xsl:copy> </xsl:for-each-group> </xsl:copy> </xsl:template> 示例小提琴是这里。

回答 1 投票 0

Selenium IDE 如何使用 xpath 提取属性的 id

我正在尝试获取 id 并将其存储为变量,如下/ 命令 目标 价值 储值 xpath=(//div[@class[starts-with(.,'commentItem')]]/@id)[1] ID 但我收到此错误消息...

回答 2 投票 0

如何用 xidel 连接两个提取的值?

我使用以下命令使用 xidel -e 提取两个值。 '//输入[@name="qid"]/@value[1]' “//跨度[@id='trueFinalResultCount']” 但我想将这两个结果放入 TSV 格式。 结果1<...

回答 1 投票 0

如何获取元素的xPath,并从xPath中再次检索元素

我正在尝试创建一个应用程序,用户可以在该应用程序中在浏览器中存储注释。 为了找出用户在文档中创建注释的位置,我尝试存储 xpath 和...

回答 1 投票 0

从节点获取 XPath 位置谓词

有没有办法从节点的某个实例获取 XPath 位置谓词? 所以我搜索了一个position(Node)函数,它返回DOM树中节点的位置。 示例:页面...

回答 1 投票 0

将文字字符串(纯文本)附加到 XPath 结果

有没有办法将文字字符串附加到 XPath 表达式获得的任何内容上? 例如来自以下 XML: 我是 我想刺激...

回答 1 投票 0

无法点击<a>标签-selenium

尝试使用 Newrelic 合成监视器(基于硒)单击链接时,它似乎从几天开始就开始失败。错误的屏幕截图显示控件悬停在链接上...

回答 1 投票 0

Python Selenium - 根据跨度的内部文本获取同级链接

我已经为此工作了几个小时,但似乎无法将所有部分放在一起...... 所以给出: 链接 00A 我已经为此工作了几个小时,但似乎无法将所有部分放在一起...... 所以给出: <a href="link1">link</a> <span class="class_name">00A<span> ... <a href="link2">link</a> <span class="class_name">00B<span> ... <a href="link3">link</a> <span class="class_name">01B<span> ... <a href="link4">link</a> <span class="class_name">01A<span> 我试图根据 span 的内部文本获取链接。所以我知道... 我可以获得所有链接: links = [my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//span[contains(@class, 'class_name')]//preceding-sibling::a[@href]")))] 我可以通过以下方式获取单个跨度上的文本: print(driver.find_element(By.XPATH, "//span[contains(@class, 'class_name')]").text) 但我无法使用 find 元素来获取所有文本进行测试,因为它要求列表的文本。 我应该能够使用: [contains(text(), '\\d+[A]')]") 但我不知道如何将它与所有链接的代码结合起来。我觉得我忽略了一些非常愚蠢的事情,但现在是早上 6:30,我昨天晚上开始做这个项目,所以我放弃了,只是去问更聪明的人。预先感谢您的帮助。 注意contains()函数的第二个参数不是正则表达式;它是一个纯字符串,需要在第一个字符串参数中查找。我相信使用 Selenium 你会被 XPath 1.0 困住,它没有任何正则表达式函数。 在不使用正则表达式的情况下,如果您想过滤一组 span 元素以仅包含文本内容由一串数字后跟单个 A 组成的元素,则需要使用更复杂的表达式,其中组合了一堆字符串函数,例如像这样的东西: span[ contains(., 'A') and contains('0123456789', substring(., 1, 1)) and translate(substring-before(., 'A'), '0123456789', '') = '' and substring-after(., 'A') = '' ] 注意,. 是对“上下文节点”的引用,在谓词表达式中表示 span 元素之一。 这个表达的意思是: span元素 其中某处包含 A 字符;和 第一个字符是数字;和 A之前的文本完全由数字组成;和 A 之后没有任何文字(即最后只有一个 A) 顺便说一句,我不确定这个表达式是否符合您的想法: //span[contains(@class, 'class_name')]//preceding-sibling::a[@href] 澄清一下:XPath 中的 // 是表达式 /descendant-or-self::node()/ 的 缩写。所以你的表达式可以写成: //span[contains(@class, 'class_name')] /descendant-or-self::node()/preceding-sibling::a[@href] 这将返回每个 a 元素(具有 href 属性),后面跟着一个兄弟元素,即 either: 一个 span 元素,其 class 属性为 'class_name'; 或 span 元素的后代,其 class 属性为 'class_name'。 如果您知道 span 和 a 实际上是兄弟姐妹,那么您可以将 // 替换为更简单的 /(在我下面的建议中)。 这里要注意的另一件事是,除非每对span(或span后代)和a都包含在父元素中,否则preceding-sibling::a[@href]步骤将返回a元素在span之前,而不仅仅是第一个这样的span(我怀疑你想要做什么,因为我认为是在span之前的立即为链接提供了标签。你可以将谓词 [1] 应用于 a[@href] 元素集以仅获取第一个(按 preceding-sibling 顺序)。 因此,为了结合这些想法,这是我的建议: //span [contains(@class, 'class_name')] [ contains(., 'A') and contains('0123456789', substring(., 1, 1)) and translate(substring-before(., 'A'), '0123456789', '') = '' and substring-after(., 'A') = '' ] //preceding-sibling::a[@href][1] 应用于此输入: <body> <a href="link1">link</a> <span class="class_name">00A</span> ... <a href="link2">link</a> <span class="class_name">00B</span> ... <a href="link3">link</a> <span class="class_name">01B</span> ... <a href="link4">link</a> <span class="class_name">01A</span> </body> ...它产生: <a href="link1">link</a> <a href="link4">link</a>

回答 1 投票 0

使用 Xpath 解析未配对标签的 XML

我想在Python中用Xpath解析以下内容。 省份 我想在Python中使用Xpath解析以下内容。 <h3>Province</h3> <ul> <li><a href="?k=*&program_language=ENGLISH&province_code=ON">Ontario (5853)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=BC">British Columbia (2096)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=AB">Alberta (1241)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=QC">Québec (921)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=NS">Nova Scotia (895)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=SK">Saskatchewan (847)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=MB">Manitoba (615)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=NB">New Brunswick (347)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=NL">Newfoundland & Labrador (305)</a> <li><a href="?k=*&program_language=ENGLISH&province_code=PE">Prince Edward Island (120)</a> </ul> 我的Python代码如下: url=r'https://universitystudy.ca/search-programs/?k=&program_level_merged=&program_language=ENGLISH' resq=req.get(url) content=html.fromstring(resq.content) category==content.xpath('//h3[text()="Area of Study"]/following-sibling::ul/li/a/text()') 虽然我希望获得如下所示的程序名称列表,但我的代码返回一个空列表, 无法弄清楚代码出了什么问题。 Business administration and management, general (520) Computer science (289) Mathematics, general (279) Psychology, general (277) Economics, general (250) Biology/biological sciences, general (249) Geography (241) English language and literature, general (240) Chemistry, general (220) Political science and government, general (211) History, general (200) 我发现问题是由于以下原因造成的 resq=req.get(url) 实际上,服务器拒绝了 req.get 请求并且对 resq 不返回任何内容 HTTP 403 Forbidden 客户端错误响应状态码表示服务器理解请求但拒绝处理它。

回答 1 投票 0

XPath:如何访问 XML 架构上的 xs:appinfo 元素内的信息

我正在努力使用 XPath 访问 xs:appinfo 元素内的信息 我在 xs:appinfo 元素内有另一个结构良好的 XML。有没有办法直接访问

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.