我试图通过查找范围标记及其中的数字来编写代码来从HTML中删除数字。
我一直收到错误"期望的字符串或缓冲区"。
我在搜索不同的问题时已经阅读了一些解决方案,但是当我尝试" ''.join(some_list)"
时,我又收到了其他错误:
"序列项0:期望字符串,找到标签"
试图搜索那个,看到一些解决方案,比如使用.get
而不是re.findall
,但错误会继续出现。
代码:
import urllib
from BeautifulSoup import *
url = raw_input('Enter the URL:')
stri = urllib.urlopen(url).read()
soup = BeautifulSoup(stri)
#retrieve of the span tags
spans = ''.join(soup('span'))
numlist = list()
for tag in spans:
num = int(re.findall('[0-9]+', tag))
numlist.append(num)
print(numlist)
我看到了针对这类错误的几种解决方案,但似乎无法解决它。
我错过了什么?
我添加了tag.text,错误已更改为另一个,现在我得到了: " Errno 11004] getaddrinfo失败"
我查看了不同的帖子,但无法解决,所以我逐行运行代码,看看问题出在哪里,我发现它在我运行时出现了原代码中的第四句:
html = urllib.urlopen(url).read()
请帮帮忙?
答案 0 :(得分:1)
tag
是一个Tag
对象,它包含大量信息,而不仅仅是一个字符串。如果您希望标签内的文本没有任何标记,请使用tag.text
,例如:
spans = ''.join(tag.text for tag in soup('span'))
# now `for tag in spans:` makes no sense because spans is a string
或
spans = soup('span')
for tag in spans:
num = len(re.findall('[0-9]+', tag.text)) # note len, not int