我正在尝试一个代码,该代码将使用Beautiful Soup从URL中提取数字,然后对这些数字求和,但是我不断收到如下错误:
预期的字符串或缓冲区
我认为这与正则表达式有关,但我无法查明问题所在。
import re
import urllib
from BeautifulSoup import *
htm1 = urllib.urlopen('https://pr4e.dr-chuck.com/tsugi/mod/python-data/data/comments_42.html').read()
soup = BeautifulSoup(htm1)
tags = soup('span')
for tag in tags:
y = re.findall ('([0-9]+)',tag.txt)
print sum(y)
最佳答案
我建议使用bs4
而不是BeautifulSoup
(旧版本)。您还需要更改此行:
y = re.findall ('([0-9]+)',tag)
像这样:
y = re.findall ('([0-9]+)',tag.text)
看看这能否使您更进一步:
sum = 0 #initialize the sum
for tag in tags:
y = re.findall ('([0-9]+)',tag.text) #get the text from the tag
print(y[0]) #y is a list, print the first element of the list
sum += int(y[0]) #convert it to an integer and add it to the sum
print('the sum is: {}'.format(sum))
关于python - 使用Beautiful Soup的“预期字符串或缓冲区”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33929317/