Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Science杂志获取xpath时遇到问题,它返回一个没有元素的列表_Python_Selenium_Xpath - Fatal编程技术网

Python 从Science杂志获取xpath时遇到问题,它返回一个没有元素的列表

Python 从Science杂志获取xpath时遇到问题,它返回一个没有元素的列表,python,selenium,xpath,Python,Selenium,Xpath,我目前工作的页面可以通过doi.org访问。这是文章的代码:10.1126/science.aaa1442 不管怎样,我正试图提取地址标签之间写的内容, 我使用了以下xpath表达式 //李[@class='aff'] html格式如下: <li class="aff"> <a id="aff-1" name="aff-1"></a> <address> <sup>1</sup> "Mater

我目前工作的页面可以通过doi.org访问。这是文章的代码:10.1126/science.aaa1442

不管怎样,我正试图提取地址标签之间写的内容, 我使用了以下xpath表达式

//李[@class='aff']

html格式如下:

<li class="aff">
   <a id="aff-1" name="aff-1"></a>
   <address>
     <sup>1</sup>
     "Materials Science Division, Argonne National Laboratory, Lemont, 
      IL 60439, USA"
   </address>
</li>
我想让我的列表中的6个元素都是空的


提前谢谢。

我对您的任何一个表达式都没有任何问题,但请尝试

/li[@class='aff']/address/normalize-space()

我对你的任何一个表达式都没有任何问题,但是试试看

/li[@class='aff']/address/normalize-space()

//li[@class='aff']/address
是您应该使用的,应该为您提供6个元素。我已经在本地对此进行了测试,您可能需要逐步检查代码,看看是否有其他问题导致您只能得到1个结果

另一个问题是
妨碍了
t.text
返回任何内容。相反,您需要做的是一些版本的:

xThread=t.get_属性('innerText')

在这种情况下,您可以向函数中添加另一个选项,并具有如下内容:

elif atr == 2:                
    xThread = t.get_attribute('innerText')

//li[@class='aff']/address
是您应该使用的,应该为您提供6个元素。我已经在本地对此进行了测试,您可能需要逐步检查代码,看看是否有其他问题导致您只能得到1个结果

另一个问题是
妨碍了
t.text
返回任何内容。相反,您需要做的是一些版本的:

xThread=t.get_属性('innerText')

在这种情况下,您可以向函数中添加另一个选项,并具有如下内容:

elif atr == 2:                
    xThread = t.get_attribute('innerText')

嗨,小精灵!因此,您使用
//li[@class='aff']
获取一些元素,您的selenium代码是什么来提取无法正常工作的文本?感谢您这么快的回答。我刚刚编辑了用于获取输出的函数。嗨,powerPixie!因此,您使用
//li[@class='aff']
获取一些元素,您的selenium代码是什么来提取无法正常工作的文本?感谢您这么快的回答。我刚刚编辑了用于获取输出的函数。感谢您这么快的回答。它说:给定的xpath表达式“//li[@class='aff']/address/normalize-space()”无效:语法错误:该表达式不是合法表达式。我想这与我用来从xpath中提取文本元素的函数有关。我在我原来的帖子中添加了代码。函数的名称是inspectElement@powerPixie-我不知道该说什么;我在两个不同的xpath在线测试人员(和)上进行了尝试,他们都给出了地址作为输出。。。也许可以用
text()
而不是
normalize-space()
来尝试它,看看这是否被接受。带有
/normalize-space()
的表达式需要XPath 2.0——令人震惊的是,Selenium仍然只支持XPath 1.0。@MichaelKay-确实令人震惊!Selenium、lxml等等-我真的不明白:(感谢您这么快的回答。它说:给定xpath表达式”//li[@class='aff']/address/normalize-space()无效:SyntaxError:表达式不是合法表达式。我想这与我用于从xpath中提取文本元素的函数有关。我在原始帖子中添加了代码。函数名称为inspectElement@powerPixie-我不知道该说什么;我在两个不同的xpath在线测试仪上进行了测试(和)他们都给出了地址作为输出…也许可以用
text()
而不是
normalize-space()
来尝试,看看这是否被接受需要XPath 2.0——令人震惊的是,Selenium仍然只支持XPath 1.0。@MichaelKay——确实令人震惊!Selenium、lxml等等——我真的不明白:(