用漂亮的汤从 <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" - 这可能是获取所需数据的更快、更容易和更合适的方法。
我想从 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" - 这可能是获取所需数据的更快、更容易和更合适的方法。