【问题标题】:Regex to extract links with digits in selenium正则表达式提取带有硒中数字的链接
【发布时间】:2017-10-09 11:24:30
【问题描述】:

以下是链接列表。

<a class="table-link" href="/tasks/document/new">Should review
</a></td>
<a class="table-link" href="/tasks/document/58324">Should review
</a></td>
<td>
<a class="table-link" href="/tasks/document/58325">AFCO certificate
</a></td>
<td>
<a class="table-link" href="/tasks/document/58325">Document Task
</a></td>
<td>
<a class="table-link" href="/tasks/document/58326">Pending
</a></td>
<td>
<a class="table-link" href="/tasks/document/58327">Cami  ltd
</a></td>
<td>
<a class="table-link" href="/tasks/document/58328">29 Sep 14:57

我想提取所有以数字结尾并包含/tasks/document 的链接。输出应该如下:

 <a class="table-link" href="/tasks/document/58324">
    <a class="table-link" href="/tasks/document/58325">
    <a class="table-link" href="/tasks/document/58326">
    <a class="table-link" href="/tasks/document/58327">
    <a class="table-link" href="/tasks/document/58328">

我正在使用以下代码driver.find_elements_by_css_selector("a[href*='/tasks/document/']")

如何将其修改为仅读取数字?

【问题讨论】:

  • 您的代码尝试在哪里?请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: python regex selenium beautifulsoup


【解决方案1】:

这可以使用 BeautifulSoup 来完成,如下所示:

html = """    
<a class="table-link" href="/tasks/document/new">Should review</a></td>
<a class="table-link" href="/tasks/document/58324">Should review/a></td>
<td>
<a class="table-link" href="/tasks/document/58325">AFCO certificate</a></td>
<td>
<a class="table-link" href="/tasks/document/58325">Document Task</a></td>
<td>
<a class="table-link" href="/tasks/document/58326">Pending</a></td>
<td>
<a class="table-link" href="/tasks/document/58327">Cami  ltd</a></td>
<td>
<a class="table-link" href="/tasks/document/58328">29 Sep 14:57"""

from bs4 import BeautifulSoup        
import re

soup = BeautifulSoup(html, "html.parser")

for a in soup.find_all('a', href=re.compile(r'\/tasks\/document\/\d+')):
    print a

这将显示:

<a class="table-link" href="/tasks/document/58324">Should review</a>
<a class="table-link" href="/tasks/document/58325">AFCO certificate</a>
<a class="table-link" href="/tasks/document/58325">Document Task</a>
<a class="table-link" href="/tasks/document/58326">Pending</a>
<a class="table-link" href="/tasks/document/58327">Cami  ltd</a>
<a class="table-link" href="/tasks/document/58328">29 Sep 14:57</a>

如果您只需要实际的href,请使用:

print a['href']

给你:

/tasks/document/58324
/tasks/document/58325
/tasks/document/58325
/tasks/document/58326
/tasks/document/58327
/tasks/document/58328

【讨论】:

    【解决方案2】:

    在 selenium 中没有这样的选项。

    如果需要,您可以使用 selenium 获取源代码并将其提供给 beautifulsoup 解析器。然后你可以使用正则表达式来查找想要的元素。

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 2020-01-21
      • 2010-10-04
      相关资源
      最近更新 更多