标签: xpath

XQuery意外结束查询命名空间声明

我正在尝试执行此查询:

declare variable $doc as xs:string external;
declare namespace type4="http:///de/tudarmstadt/ukp/dkpro/core/api/segmentation/type.ecore";
fn:doc($doc)//type4:Lemma/@value
Run Code Online (Sandbox Code Playgroud)

在BaseX java驱动程序中.实际的代码段如下所示:

String queryString = "declare variable $doc as xs:string external; " +
        "declare namespace type4=\"http:///de/tudarmstadt/ukp/dkpro/core/api/segmentation/type.ecore\"; " +
        "fn:doc($doc)//type4:Lemma/@value";

Set<String> lemmata = new TreeSet<>();
try (ClientQuery query = this.clientSession.query(queryString))
{
    query.bind("$doc", this.getUriFromDocumentId(documentId));

    while (query.more())
    {
        String next = query.next();
        logger.info(next);
        lemmata.add(next);
    }

    return lemmata;
} catch (IOException e)
{
    e.printStackTrace();
    throw new QHException(e);
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外:

[XPST0003] Unexpected end of query: 'namespace type4...'
Run Code Online (Sandbox Code Playgroud)

在打电话时query.more().

我声明命名空间错了吗?java代码中的转义引号是否有错误?我不明白xquery从何处获取查询结束.

命名空间也在我查询的xml文档中声明.

编辑:this.getUriFromDocumentId(String documentId)只是预先设置数据库名称,以便uri完成并实际匹配我想要查询的文档.在上面的代码片段执行之前,我检查说该文档存在.

java xpath xquery basex

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

有没有办法添加脚本来在chrome + puppeeter的evaluate()上下文中添加新函数?

根据这个响应,是否有一种方法(比如使用casperjs/phantomjs)在page.evaluate()上下文中添加我们的自定义函数?

例如,包含一个带辅助函数的文件x来调用Xpath函数:x('//a/@href')

javascript xpath google-chrome puppeteer

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

XPath版本之间有什么区别(1.0,2.0,3.1)

有哪些主要区别?我找不到任何完整的文章.我知道只有一组功能已被扩展 - 例如日期,时间等.

xml xpath

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

包含内容的元素的XPath?

我正在使用HtmlAgilityPack,我有以下情况:

<table class='table-main odds '>   
   <tbody>
      <tr>..</tr>
      <tr>..</tr>
      <tr>..</tr>
      <tr></tr>
      <tr></tr>
  </tbody>
</table>          
Run Code Online (Sandbox Code Playgroud)

你可以看到tr里面只有三个内容,所以我希望在最终结果中应该只有前三个tr.实际上我的代码返回所有tr:

 HtmlNode oddsTable = doc.DocumentNode
          .SelectSingleNode("//table[starts-with(@class, 'table-main')]");
 HtmlNodeCollection rows = oddsTable.SelectNodes("tbody//tr");
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标xpath

感谢您的帮助和解释.

html c# xml xpath html-agility-pack

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

使用Selenium和python在DOM中查找第二个元素

我的网页上有两个具有相同类名的元素,并且我正在尝试访问第二个元素,但我无法做到这一点。

跨度看起来像这样:

<span class="REPORTING_DASHBOARDS__link navMenuLabel ">

Dashboards

</span>
Run Code Online (Sandbox Code Playgroud)

我这部分的代码如下所示:

dashboards_button = driver.find_element_by_css_selector(".REPORTING_DASHBOARDS__link.navMenuLabel")[1]                                                          
dashboards_button.click()
Run Code Online (Sandbox Code Playgroud)

python selenium xpath css-selectors selenium-webdriver

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

选择器无效:使用Webdriver和Python的find_element_by_class_name不允许使用复合类名

我正在尝试通过webWhatsapp从聊天中打印我的消息之一。

我可以通过“控制台”选项卡中的Javascript完成此操作

recived_msg = document.getElementsByClassName('XELVh selectable-text invisible-space copyable-text') // returns an array of the chat
recived_msg[5].innerText // shows me the 4th message content
Run Code Online (Sandbox Code Playgroud)

问题是我试图在python上做同样的事情,但对我不起作用。

这是我尝试过的:

from selenium import webdriver
recived_msg = driver.find_element_by_class_name('XELVh selectable-text invisible-space copyable-text')
final = recived_msg[5].innerText #doesnt work for some reason
Run Code Online (Sandbox Code Playgroud)

我遇到的错误是:消息:无效的选择器:不允许使用复合类名

我对javascript有点陌生,所以很抱歉造成误会,并感谢您的帮助!:)

xpath webdriver css-selectors python-3.x selenium-webdriver

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

找出在Robot Framework中有用的XPath

我需要访问看起来像一个表的东西的第一个单元格(但有点奇怪 - 第一列的DIV在结构上"高于"同一行上的其余单元格).

<div class="slick-viewport slick-viewport-top slick-viewport-left" tabindex="0" hidefocus="" style="overflow: auto; width: 100%; height: 513px;">
   <div class="grid-canvas grid-canvas-top grid-canvas-left" tabindex="0" hidefocus="" style="height: 825px; width: 1336px;" unselectable="on">
      <div class="ui-widget-content slick-row  even lastClicked selected" role="row" row="0" style="top:0px;">
         <div class="slick-cell l0 r0  uppercase selected" aria-describedby="inforDataGrid160360C1" tabindex="-1" role="gridcell"><span style="float: left;display:inline-block;height:1px;width:0px"></span><button type="button" class="tree-expand inforIconButton  closed"><span></span></button><span>ABC</span></div>
         <div class="slick-cell l1 r1  uppercase selected" aria-describedby="inforDataGrid160360C2" tabindex="-1" role="gridcell">DEF</div>
         <div class="slick-cell l2 r2  uppercase selected" aria-describedby="inforDataGrid160360C3" tabindex="-1" role="gridcell">GHI</div>
      </div>
      <div class="ui-widget-content slick-row  odd" role="row" row="1" style="top:25px;">
         <div class="slick-cell l0 r0 …
Run Code Online (Sandbox Code Playgroud)

html xpath robotframework

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

根据特定模式刮取多个段落

本报网站在单独的<p>对象中列出了其文章的段落,其中每个<class>属性的名称以文章一词开头.

如何从tz2对象获取<class>属性以文章开头的所有段落?

require(rvest)

url = 'http://taz.de/Kongo-Kunst-im-Bruesseler-Afrikamuseum/!5563620/'

tz = read_html(url)

tz2 = tz %>% 
  xml_nodes(xpath = "//*[@class='sectbody']") %>% 
  xml_children()
Run Code Online (Sandbox Code Playgroud)

我的尝试:

# get one paragraph by class attribute
tz2 %>% 
  xml_nodes(xpath = "//p[@class='article first odd Initial']") %>% 
  xml_text()

# regex-like get all 'article' paragraphs
tz2 %>% 
  xml_nodes(xpath = "//p[@starts-with(@class, 'article')]") %>% 
  xml_text()
Run Code Online (Sandbox Code Playgroud)

xpath r html-parsing web-scraping rvest

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

与Selenium的XPath问题

我想这是一个永恒的问题,但我需要一些XPath表达式的帮助.使用Selenium搜索的HTML如下所示:

<div class="container">
  <div class"row">
    <div class="col-md-6 col-md-offset-3 jumbotron">
      <div class="text-center">
        <h1>Start a new To-Do list</h1>
        <form method="POST" action="/lists/new">
          <input name="item_text" id="id_new_item"
            class="form-control input-lg"
            placeholder="Enter a to-do item" />
          <input type="hidden" name="csrfmiddlewaretoken" value="***********">
          <div class="form-group has-error">
            <span class="help-block">You can&#39;t have an empty list item</span>
          </div>    
        </form>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Python中的搜索表达式如下所示:

self.wait_for(lambda: self.assertEqual(
    self.browser.find_element_by_xpath(
        "//span[contains(text(), 'You can&#39;t have an empty list item')]"
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

这是在测试中运行的,即使显然存在,也无法找到文本.测试的ttaceback是:

ERROR: test_cannot_add_empty_list_items (functional_tests.test_list_item_validation.ItemValidationTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/eric/Git/TDD/functional_tests/test_list_item_validation.py", line 15, in …
Run Code Online (Sandbox Code Playgroud)

python selenium xpath xpath-1.0 selenium-webdriver

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

按类别查找命令不起作用

https://www.n11.com/telefon-ve-aksesuarlari/cep-telefonu-aksesuarlari

在此网站上,我试图单击(下一页按钮)

我想抓住这条线

<a href="https://www.n11.com/telefon-ve-aksesuarlari/cep-telefonu-aksesuarlari?pg=3" class="next navigation"></a>
Run Code Online (Sandbox Code Playgroud)

我在程序中编写此代码

data=driver.find_elements_by_class_name("next navigation")
Run Code Online (Sandbox Code Playgroud)

我的问题是关于这个问题。

python selenium xpath css-selectors webdriverwait

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