我刚刚发现了美丽的汤,它看起来非常强大。我想知道是否有一种简单的方法来提取文本的“alt”字段。 一个简单的例子是
from bs4 import BeautifulSoup
html_doc ="""
<body>
<p>Among the different sections of the orchestra you will find:</p>
<p>A <img src="07fg03-violin.jpg" alt="violin" /> in the strings</p>
<p>A <img src="07fg03-trumpet.jpg" alt="trumpet" /> in the brass</p>
<p>A <img src="07fg03-woodwinds.jpg" alt="clarinet and saxophone"/> in the woodwinds</p>
</body>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.get_text())
这会导致
在管弦乐队的不同部分你会发现:
字符串中的A
黄铜中的A
木管乐器中的A
但我希望在文本提取中包含alt字段,这将提供
在管弦乐队的不同部分你会发现:
琴弦中的小提琴
黄铜中的小号
木管乐器中的单簧管和萨克斯管
由于
答案 0 :(得分:2)
请考虑这种方法。
from bs4 import BeautifulSoup
html_doc ="""
<body>
<p>Among the different sections of the orchestra you will find:</p>
<p>A <img src="07fg03-violin.jpg" alt="violin" /> in the strings</p>
<p>A <img src="07fg03-trumpet.jpg" alt="trumpet" /> in the brass</p>
<p>A <img src="07fg03-woodwinds.jpg" alt="clarinet and saxophone"/> in the woodwinds</p>
</body>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
ptag = soup.find_all('p') # get all tags of type <p>
for tag in ptag:
instrument = tag.find('img') # search for <img>
if instrument: # if we found an <img> tag...
# ...create a new string with the content of 'alt' in the middle if 'tag.text'
temp = tag.text[:2] + instrument['alt'] + tag.text[2:]
print(temp) # print
else: # if we haven't found an <img> tag we just print 'tag.text'
print(tag.text)
输出
Among the different sections of the orchestra you will find:
A violin in the strings
A trumpet in the brass
A clarinet and saxophone in the woodwinds
策略是:
<p>
代码<img>
代码<p>
代码
<img>
标记将其alt
属性的内容插入tag.text
并将其打印出来<img>
标签,请打印答案 1 :(得分:0)
a = soup.findAll('img')
for every in a:
print(every['alt'])
这将完成这项工作。
1.line找到所有IMG(我们使用.find 全部)
或文字
print (a.text)
for eachline in a:
print(eachline.text)
简单的for循环遍历每个结果或手动soup.findAll('img')[0]
然后
soup.findAll('img')[1]
..等等