漂亮汤(Beautiful Soup)。如何获取包含特定单词的链接?

3

HTML包含在div中的字符串:

  • 'div class="slide"' 'img src="xttps://site.com/files/r_1000,kljg894/43k5j/35h43jkl.jpg' '/div'
  • 'div class="slide"' 'img src="xttps://site.com/files/r_2000,kljg894/43k5j/35h43jkl.jpg' '/div'
  • 'div class="slide"' 'img src="xttps://site.com/files/r_3000,kljg894/43k5j/35h43jkl.jpg' '/div'

需要获取仅包含“r_3000”的链接

这段代码可以获取所有链接:

imglink = soup.find_all('img')
print(imglink)

我查阅并尝试了许多技巧。例如:

('img', string="*r_3000*")('img', string=re.compile('r_3000')('img', string=lambda s: 'r_3000' in s) 等等,但这些都没有起作用 :(

请帮帮我。

2个回答

2
许多方法可以实现这一点。尝试使用CSS选择器。
from bs4 import BeautifulSoup
html='''<div class="slide"><img src="xttps://site.com/files/r_1000,kljg894/43k5j/35h43jkl.jpg"></div>
<div class="slide"> <img src="xttps://site.com/files/r_2000,kljg894/43k5j/35h43jkl.jpg"></div>
<div class="slide"><img src="xttps://site.com/files/r_3000,kljg894/43k5j/35h43jkl.jpg"></div>'''
soup=BeautifulSoup(html,"html.parser")
for item in soup.select("img[src*='r_3000']"):
    print(item['src'])

1

我建议先用Python从文档中进行过度选择,然后再进行筛选。例如:

img_links = soup.find_all('img', src=True)
r_3000_links = [ l['src'] for l in img_links if 'r_3000' in l['src'] ]

将返回包含“r_3000”的所有链接列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接