从美丽的汤中获取<span>的文字

时间:2016-11-07 16:01:13

标签: python-3.x beautifulsoup html-parsing

我想从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 个答案:

答案 0 :(得分:2)

您需要使用.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" - 这可能是更快,更简单,更合适的方式来获取所需数据。