<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">
我需要抓住字符串&#39; / r / 85e08291696a3726?sp = 0&#39;它发生在整个页面中。我不确定如何使用soup.find_all方法来执行此操作。我需要的字符串总是出现在&#39;旁边。
这就是我的想法(下图),但显然我得到的参数不对。如何格式化find_all方法以返回&#39; / r / 85e08291696a3726?sp = 0&#39;整个页面中的字符串?
for divsec in soup.find_all('div', class_='clickable_asdf_card'):
print('got links')
x=x+1
我阅读了bs4的文档,我正在考虑使用find_all(&#39; clickable_asdf_card&#39;)来查找我需要的所有字符串,但接着是什么?有没有办法调整参数以返回我需要的字符串?
答案 0 :(得分:2)
使用BeautifulSoup
的{{3}}查找并从onclick
属性值中提取所需的子字符串:
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()
。