【问题标题】:How to get a specific element from a list using Selenium with Python如何使用 Selenium 和 Python 从列表中获取特定元素
【发布时间】:2020-04-09 04:11:20
【问题描述】:

列表示例:

<div class="c-article-metrics-bar__wrapper u-clear-both">
      <ul class="c-article-metrics-bar u-list-inline">
         <li class="c-article-metrics-bar__item">
            <p class="c-article-metrics-bar__count">"277k "
              <span class="c-article-metrics-bar__label">Accesses</span>
            </p>
         </li> 
         <li class="c-article-metrics-bar__item">
            <p class="c-article-metrics-bar__count">"6 "
              <span class="c-article-metrics-bar__label">Citations</span>
            </p>
         </li>
         <li class="c-article-metrics-bar__item">
            <p class="c-article-metrics-bar__count">"594 "
              <span class="c-article-metrics-bar__label">Altmetric</span>
            </p>
         </li>
     </ul>
 </div>

我正在尝试从列表中获取“引文”的数量。问题是,如果没有引用,列表元素将被省略。

我的想法是从 p 和 span 标签中获取信息,并将数据保存在两个列表中。然后遍历 span 标签列表,如果找到“Citations”字符串,则从 p 标签列表中返回该索引处的文本,如下所示:

metrics_labels = self.wd.find_element_by_css_selector('span.c-article-metrics-bar__label')
labels = [label.text for label in metrics_labels]

metrics_counts = self.wd.find_element_by_css_selector('p.c-article-metrics-bar__count')
counts = [count.text for count in metrics_counts]

for i in range(len(labels) - 1):
  if labels[i] == "Citations":
    return counts[i]

但它不起作用,我在这里缺少什么?

谢谢!

【问题讨论】:

    标签: python html css selenium mining


    【解决方案1】:

    看起来你不是用find_elements收集所有元素,而是在这里使用find_element收集1:

    metrics_labels = self.wd.find_element_by_css_selector('span.c-article-metrics-bar__label')
    

    这里:

    metrics_counts = self.wd.find_element_by_css_selector('p.c-article-metrics-bar__count')
    

    要修复它,请尝试使用find_elements_by_css_selector

    metrics_labels = self.wd.find_elements_by_css_selector('span.c-article-metrics-bar__label')
    labels = [label.text for label in metrics_labels]
    
    metrics_counts = self.wd.find_elements_by_css_selector('p.c-article-metrics-bar__count')
    counts = [count.text for count in metrics_counts]
    

    我希望这有效,祝你好运!如果没有帮助,请告诉我们您遇到的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2015-04-09
      • 2020-03-19
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多