python - 从科学杂志获取 xpath 时遇到问题,它返回一个没有元素的列表
问题描述
我目前正在处理的页面可以通过doi.org访问这是文章的代码:10.1126/science.aaa1442
无论如何,我试图提取地址标签之间写的内容,我使用了以下 xpath 表达式
//li[@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>
我得到的是输出: ['', '', '', '', '', '']
我尝试扩展包含 //li[@class='aff']/address 的 xpath,并使用从 google chrome 开发人员工具复制的绝对路径进行了一些实验,结果是 ['']
xpath 被传递给我编写的这个函数。它一直在其他情况下工作,但不适用于这个:
def inspectElement(self,exp,atr=None):
def _init_(self,exp,atr):
self.exp = exp
self.atr = atr
thread = browser.find_elements(By.XPATH,(" %s" % exp))
xArray = []
for t in thread:
if atr == 0:
xThread = t.get_attribute('id')
elif atr == 1:
xThread = t.get_attribute('href')
else:
xThread = t.text
xArray.append(xThread)
return xArray
我想获取列表中当前为空的所有 6 个元素。
提前致谢。
解决方案
//li[@class='aff']/address
是你应该使用的,应该给你 6 个元素。我已经在本地对此进行了测试,您可能需要单步执行您的代码以查看此处是否存在其他问题,导致您仅获得 1 个结果。
另一个问题是它<sup>
妨碍了t.text
返回任何东西。你需要做的是一些版本:
xThread = t.get_attribute('innerText')
在这种情况下,您可以为您的函数添加另一个选项,并具有以下内容:
elif atr == 2:
xThread = t.get_attribute('innerText')
推荐阅读
- c# - Xamarin Forms-Entry、Picker 等在从后台恢复应用程序或解锁手机后失去其价值
- bash - bash:命令在手动输入时有效,但在脚本上无效
- javascript - 如何在javascript中访问函数内的变量值
- c++ - 动态规划问题 - 最小成本路径
- salt-stack - 如何与盐状态进行符号链接?
- javascript - 为什么我没有从 React Native 中的 Object.entries 获得正确的结果?
- javascript - 我正在尝试使用 this.SetState() 更改组件的状态,但它不起作用
- python-3.x - 日期时间范围sqlalchemy列?
- firebase - 查询数据时出现Flutter平台错误
- javascript - 如何将离子阵列发送到 Firebase 数据库