用漂亮的汤从 <span> 获取文本

get text from <span> with beautiful soup

我想从 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 km/h”

然后我试了一下

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" }))

但是也没用。请帮助我。

您需要使用 .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" - 这可能是获取所需数据的更快、更容易和更合适的方法。