我想从website得到数字的总和。我这样做:
lst = list()
url = raw_input('Enter - ')
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
tags = soup('span')
for tag in tags:
lst.append(map(int,tag.contents))
print lst
但如果我没有记错的话,我现在每个号码都有一个子列表。因此,sum(lst)
不起作用。如何合并子列表或将数字放在单个列表中?谢谢!
答案 0 :(得分:3)
您可以使用以下内容:
import urllib
from bs4 import BeautifulSoup
url = 'http://python-data.dr-chuck.net/comments_213060.html'
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
tags = soup('span')
lst = [int(tag.text) for tag in tags]
print(sum(lst))
<强>输出强>
2838
答案 1 :(得分:2)
您可以使用built-in sum()
function:
comments = soup('span', class_="comments")
sum_coments = sum(int(comment.get_text(strip=True)) for comment in comments)
print(sum_coments) # prints 2838
请注意,此处使用的.get_text()
返回元素的“文本”,而不是.contents
,它是元素子元素的文本列表。
请注意,我还改进了定位器,并检查span
是否有comments
类。