标签: xpath

Selenium 中的 Xpath 通配符以捕获多个结果实例

我正在尝试使用 Python、Selenium 和 Xpath 从站点收集一些数据。我想要多个数据点,它们都在这个结构中:

/tr[1]/td
/tr[2]/td
/tr[3]/td
/tr[4]/td
Run Code Online (Sandbox Code Playgroud)

我不知道有多少<tr>,所以我试图以一种只给我所有结果的方式进行搜索(希望在列表中)。我怎么做?

这是我的实际代码,但这只是给我个人结果。我是网络抓取的新手,不确定问题是否出在我的 Xpath 上(没有正确使用通配符,或者它是否与我的 get_attribute 标签有关 - 如果它获得了innerhtml,那么它是否只为单个条目获得它?)

data = driver.find_element_by_xpath('//*[@id="a-stockFinancials_tabs"]/div[2]/div[1]/table/tbody/tr[5]/td').get_attribute("innerHTML")
print data
Run Code Online (Sandbox Code Playgroud)

python selenium xpath web-scraping

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

是否可以在 xpath 断言中使用 jmeter 变量?

我在 jmeter 测试套件中使用 xpath 断言,但在处理我收到的响应中的动态内容时遇到问题。有没有办法使用我在 xpath 断言中定义的 jmeter 变量?我试过这个,但它不起作用。

/response/body/locationReports/locationReport[@deviceHandle = ${deviceHandle}]
Run Code Online (Sandbox Code Playgroud)

xpath jmeter

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

xpath 识别动态值传递

xpath

driver.findElement(By.xpath("//input[@accesskey='9']"));
Run Code Online (Sandbox Code Playgroud)

我们如何在 accesskey 属性中传递 Dynamic 值,因为 accesskey 属性分配有任何整数

所以我从数据库中获取该 id 并尝试在 accesskey 属性中传递该 id 如何使用 java?

html代码

td style="width: 5%;">
<input type="checkbox" data-bind="attr: { accesskey: Id }" accesskey="6">
</td>
<td style="width: 5%;">
<input type="checkbox" data-bind="attr: { accesskey: Id }" accesskey="7">
</td>
Run Code Online (Sandbox Code Playgroud)

代码

public void portfolioRenewalSearch(String portfolioId) throws Exception {

        try {
            driver.findElement(By.xpath("//input[@accesskey= portfolioId]"))
                    .click();    
        } catch (AssertionError Ae) {
            Ae.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

但上面的代码显示异常“selenium.NoSuchElementException”

java selenium xpath

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

Findall 等效于 xpath ,Lxml

我正在提取关于标签的文本,我需要以列表形式获取它们 wrt p 标签。我有这个 xpath 表达式:

 find =  etree.XPath("//w:p//.//*[local-name() = 'ins']//text()" ,namespaces={'w':"http://schemas.openxmlformats.org/wordprocessingml/2006/main"}) 
Run Code Online (Sandbox Code Playgroud)

我想在findall表达式中使用它。我试过:

inserted_list_1=[]
for p in lxml_tree.findall('.//{' + w + '}p'):
    inserted_list_1.append([t.text for t in p.findall('.//{' + w + '}ins')])
Run Code Online (Sandbox Code Playgroud)

但所有这些返回的是一个充满None值的列表,而前 xpath 工作得很好。
我认为缺少一些中间路径。

python xml xpath lxml findall

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

如何使用 Greasemonkey 隐藏 XPath 元素?

我有一个 XPath /html/body/div[1]/div/div/center[1]/table,我想让它不再可见。

我看到我可以使用,document.evaluate()但我不知道如何隐藏它。

javascript xpath greasemonkey tampermonkey

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

Scrapy Xpath 如何处理表中标签之间的缺失数据?

嗨,我正在使用python 的scrapy 从站点上刮下一张表,所以我必须使用scrapy 的Selector xpath 来执行此操作。我正在考虑获取表格的所有数据内容,然后将其与表格标题一起压缩 (zip()),以便在我的最终数据中,表格的每个数据内容都与代表它的标签相匹配。但是,我注意到表的某些部分没有值.. 就像 in 而不是

<td>24</td>
Run Code Online (Sandbox Code Playgroud)

只是

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

当我抓取时,scrapy 会跳过空标签并获取下一个值。这搞砸了我要压缩的方式,因为由于缺少值,所有东西都可能向左移动一个或多个。那么..有没有办法让scrapy的选择器xpath返回某种空标识符,那里缺少某些东西,以便我可以解释丢失的信息?或者,也许有更好的方法来解决我的问题,以防止发生此问题?谢谢!

编辑:xpath 看起来像......

Selector(response).xpath("tbody/tr/td/text()").extract()
Run Code Online (Sandbox Code Playgroud)

python xpath scrapy web-scraping

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

使用过多参数调用的函数

我想使用 EXSLT 库在 XSLT 1.0 中编写一个函数。这是我的样式表。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:func="http://exslt.org/functions"
    xmlns:my="http://www.example.com/">

    <xsl:output method="text" encoding="UTF-8"/>

    <func:function name="my:test">
        <xsl:param name="param1" />
        <xsl:param name="param2" />
        <func:result select="concat($param1, $param2)" />
    </func:function>

    <xsl:template match="/">
        <xsl:value-of select="my:test('test1', 'test2')" />
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试执行它xsltproc时出现以下错误。

{ http://www.example.com/ }test: 调用时参数过多 xmlXPathCompiledEval: 堆栈上还剩 1 个对象。运行时错误:文件 exslt_function_test.xsl 第 16 行元素值-XPath 评估未返回结果。

我没有看到任何错误。该函数被定义和调用正好有两个参数。过去有没有人遇到过类似的问题?

删除任何不必要的评论... 不,我不能使用 XSLT 2.0。

xml xslt xpath exslt xslt-1.0

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

Python:lxml xpath 获得两个不同的类

这是我的示例 Python 代码

import requests
import lxml.html

page = '<div class="aaaa12"><span class="test">22</span><span class="number">33</span></div><div class="dddd13"><span>Kevin</span></div>' 
tree = lxml.html.fromstring(page)


number = tree.xpath('//span[@class="number"]/text()')
price = tree.xpath('.//div[@class="dddd13"]/span/text()')

print number
print price
Run Code Online (Sandbox Code Playgroud)

当我跑步时,我可以像下面这样

['33']
['Kevin']
Run Code Online (Sandbox Code Playgroud)

但是,我想同时得到两个像 = ['33','Kevin'] 我试过了

number = tree.xpath('//span[@class="number"]/text() or //div[@class="dddd13"]/span/text()')
Run Code Online (Sandbox Code Playgroud)

我无法获得价值。获得两个不同类的语法是什么?

python xpath lxml

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

如何使用 lxml 和 python 从表中查找特定的 xpath td 类

我正在尝试使用 Python lxml 从页面导入文本列表。这是我到目前为止所拥有的。

test_page.html 来源:

<html>
<head>
    <title>Test</title>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
    <tr><td><a title="This page is cool" class="producttitlelink" href="about:mozilla">This page is cool</a></td></tr>
    <tr height="10"></tr>
    <tr><td class="plaintext">This is a really cool description for my really cool page.</td></tr>

            <tr><td class="plaintext">Published: 7/15/15</td></tr>

    <tr><td class="plaintext">



    </td></tr>
    <tr><td class="plaintext">


    </td></tr>
    <tr><td class="plaintext">


    </td></tr>
    <tr><td class="plaintext">

    </td></tr>


    </tbody>
</table>
</body>
Run Code Online (Sandbox Code Playgroud)

蟒蛇代码:

from lxml import html
import requests
page = requests.get('http://127.0.0.1/test_page.html')
tree = html.fromstring(page.text)
description = tree.xpath('//table//td[@class="plaintext"]/text()')
>> print (description)
['This is …
Run Code Online (Sandbox Code Playgroud)

python xpath lxml

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

如何“单击”单选按钮 -&gt; 需要 xPath

我需要检查三个单选按钮之一。我试过这个代码:

//input[@type='radio']/following-sibling::*[contains(., 'Inne akcje')]
Run Code Online (Sandbox Code Playgroud)

但我认为这是错误的方式。

<label class="HoldersInLineLabel">Rodzaj akcji</label>

<input type="radio" ng-model="holdersModel.OperationType" class="prettifiedIeCheckbox ng-valid ng-dirty" value="P" name="01H">
      "Przekazanie"
<input type="radio" ng-model="holdersModel.OperationType" value="D" class="prettifiedIeCheckbox ng-valid ng-dirty" name="01I">
     "Dekretacja"
<input type="radio" ng-model="holdersModel.OperationType" value="O" class="prettifiedIeCheckbox ng-valid ng-dirty" name="01J">
     "Inne akcje"

<span class="k-widget k-dropdown k-header ng-pristine ng-valid" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false"...></span>
Run Code Online (Sandbox Code Playgroud)

selenium xpath selenium-webdriver

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