BeautifulSoup: извлечь текст «img alt»

Я пытаюсь разобрать img alt текст.

Ниже приведен HTML-код:

[<p class="number">
<img alt="1" src="/img/common_new/ball_1.png"/>
<img alt="10" src="/img/common_new/ball_10.png"/>
<img alt="13" src="/img/common_new/ball_13.png"/>
<img alt="26" src="/img/common_new/ball_26.png"/>
<img alt="32" src="/img/common_new/ball_32.png"/>
<img alt="36" src="/img/common_new/ball_36.png"/>
<span class="plus">+</span>
<span class="number_bonus"><img alt="9" src="/img/common_new/ball_9.png"/> 
</span>
</p>]

Я хочу получить img alt [1,10, 13,26,32,36,9] Что мне делать с помощью BeautifulSoup?


person Yeop    schedule 19.05.2018    source источник
comment
Пробовали ли вы использовать метод find_all ? Вы можете получить значение, используя формат словаря. Пожалуйста, опубликуйте свою попытку в ОП, чтобы мы могли увидеть конкретную проблему, с которой вы столкнулись.   -  person cwahls    schedule 19.05.2018


Ответы (2)


Сначала нужно установить bs4 и запросы. Откройте cmd и напишите:

pip install bs4
pip install requests

Тогда вот ваш код.

from bs4 import BeautifulSoup
import requests
r = requests.get('your website')
source = r.content
soup = BeautifulSoup(r.content, 'lxml') 

altlinks = []
imgalt_list = [1, 10, 13, 32, 36]

for x in soup.find_all('img', alt= True): #we find all img alt names
    if x['alt'] in imgalt_list: #if alt name matchs with your numbers
        altlinks.append(x.get('src')) #adding into list
print(altlinks)

Вы можете спросить любую часть, которую вы не понимаете.

person Community    schedule 19.05.2018

Используйте метод BeautifulSoup find_all.

>>> import bs4
>>> html = '''<p class="number">
<img alt="1" src="/img/common_new/ball_1.png"/>
<img alt="10" src="/img/common_new/ball_10.png"/>
<img alt="13" src="/img/common_new/ball_13.png"/>
<img alt="26" src="/img/common_new/ball_26.png"/>
<img alt="32" src="/img/common_new/ball_32.png"/>
<img alt="36" src="/img/common_new/ball_36.png"/>
<span class="plus">+</span>
<span class="number_bonus"><img alt="9" src="/img/common_new/ball_9.png"/> 
</span>
</p>'''

>>> soup = bs4.BeautifulSoup(html, 'lxml')
>>> img_alt = []
>>> for img_tag in soup.find_all('img'):
...     img_alt.append(int(img_tag.get('alt')))  # typecasting to integer
>>> print(img_alt)
[1,10, 13,26,32,36,9]  # Output
person Bijoy    schedule 19.05.2018