我是BeautifulSoup的新手并且已经搜索了在线docos但是找不到我想要的东西,我只需要将标签的值存储到变量中,以便之后可以将其写入文件
以下是代码:
import urllib2
from BeautifulSoup import BeautifulSoup
f = open('C:\test.txt', 'w')
url = "http://www.wunderground.com/history/airport/KBUF/2011/1/1/DailyHistory.html?MR=1"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
table = soup.find('table', id="historyTable").tbody
rows = table.findAll('tr') #get all rows
cols = rows[1].findAll('td') #get 2nd row
meanTemp = cols[1] # get 2nd column
alt = meanTemp('span')[1]
print alt
dayTemp = alt.contents
print dayTemp
f.write(timestamp + ',' + dayTemp + '\n')
打印出来:
<span class="b">8</span>
[u'8']
然后给出了这个错误:
f.write(timestamp + ',' + dayTemp + '\n')
TypeError: cannot concatenate 'str' and 'list' objects
即:我希望print dayTemp
行实际打印8
而不是[u'8']
答案 0 :(得分:1)
根据您的错误,解决方案似乎是:
f.write(timestamp + ',' + dayTemp[0] + '\n')
答案 1 :(得分:1)
问题是[u'8']
是一个list
,包含一个对象,一个Unicode字符串。如果要获取该列表中的(唯一)对象,请将其编入索引以获取其第一个条目:
[u'8'][0] # is u'8'
或者您可以将其值与模式匹配:
[a] = [u'8'] # now a is u'8'
答案 2 :(得分:1)
如果您不确定span标记的内容,可以添加以前的答案:
f.write(timestamp + ',' + '<sep>'.join(dayTemp) + '\n')
其中&lt; sep&gt;是您选择的分隔符。