0

我在做什么:我正在编写一个网页提取器来收集天气数据。这是我到目前为止所做的:

import urllib.request
from bs4 import BeautifulSoup

# open the webpage and assign the content to a new variable
base = urllib.request.urlopen('http://www.weather.com/weather/today/Beijing+CHXX0008:1:CH')
f = base.readlines()
f = str(f)


soup = BeautifulSoup(f)

rn_base = soup.find_all(itemprop="temperature-fahrenheit")

如果你print是变量rn_base,你会得到:[<span class="wx-value" itemprop="temperature-fahrenheit">75</span>],我认为这是一个只有一个元素的列表。数字75是我的目标。

问:我尝试了几种方法来获取号码,但都失败了。它们是,即 1) 用于str.join()转换rn_base为字符串,但由于rn_baseResultSet对象而失败;2)使用索引切片,但是因为它不是字符串主题,所以失败了。3)按照beautifulsoup文档中的说明使用get_text()但是得到了AttributeError: 'ResultSet' object has no attribute 'get_text'

任何帮助是极大的赞赏!

4

1 回答 1

0

rn_base 是一个结果集对象,所以即使结果只是一个,它也假设可能有很多结果。所以,

for rn in rn_base
Print rn.string

此 for 循环将从结果中提取每一行(当它们多次出现“华氏温度”时)

正如您所说,您正在尝试获取天气数据,我认为使用find()限制比使用更好find_all()

于 2013-07-19T02:42:23.727 回答