【问题标题】:Beautiful Soup. How to get a link containing a specific word?美丽的汤。如何获取包含特定单词的链接?
【发布时间】:2023-04-09 10:54:01
【问题描述】:
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) 以及许多其他人,但这一切都不起作用:(
请帮帮我。
【问题讨论】:
标签:
beautifulsoup
python-2.x
【解决方案1】:
有很多方法可以做到这一点。试试 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'])
【解决方案2】:
我会首先从文档中过度选择并使用 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'的所有链接的列表