如何使用BS4中的find all方法来抓取某些字符串

how to use find all method from BS4 to scrape certain strings

<li class="sre" data-tn-component="asdf-search-result" id="85e08291696a3726" itemscope="" itemtype="http://schema.org/puppies">
  <div class="sre-entry">
    <div class="sre-side-bar">
    </div>
    <div class="sre-content">
      <div class="clickable_asdf_card" onclick="window.open('/r/85e08291696a3726?sp=0', '_blank')" style="cursor: pointer;" target="_blank">

我需要获取整个页面中出现的字符串“/r/85e08291696a3726?sp=0”。我不确定如何使用 soup.find_all 方法来执行此操作。我需要的字符串总是出现在 '

这就是我的想法(如下),但显然我的参数有误。我如何将 find_all 方法格式化为 return 整个页面中的 '/r/85e08291696a3726?sp=0' 字符串?

for divsec in soup.find_all('div', class_='clickable_asdf_card'):
    print('got links')
    x=x+1

我阅读了 bs4 的文档,我正在考虑使用 find_all('clickable_asdf_card') 来查找所有出现的我需要的字符串,但是然后呢?有没有办法将参数调整为return我需要的字符串?

使用 BeautifulSoupbuilt-in regular expression searchonclick 属性值中查找并提取所需的子字符串:

import re

pattern = re.compile(r"window\.open\('(.*?)', '_blank'\)")
for item in soup.find_all(onclick=pattern):
    print(pattern.search(item["onclick"]).group(1))

如果您只想查找一个元素,请使用 find() 而不是 find_all()