Python 从Science杂志获取xpath时遇到问题,它返回一个没有元素的列表
我目前工作的页面可以通过doi.org访问。这是文章的代码:10.1126/science.aaa1442 不管怎样,我正试图提取地址标签之间写的内容, 我使用了以下xpath表达式 //李[@class='aff'] html格式如下: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
<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等等——我真的不明白:(