2016-11-07 1 views
0

Я хочу получить текст из тега span, но у меня такие проблемы. Я написал это,получить текст от <span> с красивым супом

import bs4 as bs 
import urllib.request 

page = urllib.request.urlopen('http://www.accuweather.com/en/az/baku/27103/current-weather/27103').read() 

soup = bs.BeautifulSoup(page, 'html.parser') 

print(soup.find_all('li', class_='wind')) 

и он вернулся, как этот [<li class="wind"><strong>28 km/h</strong></li>]

, но я хочу, чтобы получить только "28 км/ч"

тогда я попробовал, что

page = urllib.request.urlopen('http://www.accuweather.com/en/az/baku/27103/current-weather/27103').read() 

soup = bs.BeautifulSoup(page, 'html.parser') 

print(soup.find_all("span" , { "class" : "wind" })) 

но это тоже не сработало. Пожалуйста, помогите мне с этим.

ответ

1

Вы должны использовать .find() и не .find_all() получить один элемент и вызвать .get_text() получить текст нужного элемента:

print(soup.find('li', class_='wind').get_text()) 

Или, вы можете также использовать .select_one() и найти тот же элемент с помощью селектора CSS:

print(soup.select_one('li.wind').get_text()) 

В качестве примечания, посмотрите "AccuWeather API" - это может быть более быстрый, простой и более подходящий способ получить нужные данные.

+0

Отлично! Большое спасибо. Вы не можете знать, как вы мне помогли :) и спасибо за консультацию. Кстати, soup.select_one работал, soup.find не –

Смежные вопросы