【发布时间】:2016-11-10 21:09:05
【问题描述】:
我正在尝试编写一个代码,通过查找跨度标签和其中的数字来从 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()
请帮忙?
【问题讨论】:
-
调试错误信息的第一步,是查找行号。您缺少行号。
-
Python 不只是说“预期的字符串或缓冲区”——它写了一个堆栈跟踪来显示有问题的行。您可以发布该堆栈跟踪以便我们查看吗?否则,我们不得不猜测问题出在哪里。
-
调试提示:
print是你的朋友。我在您的代码中添加了print 'badness', type(soup('span')[0])并得到了badness <class 'BeautifulSoup.Tag'>。那不是可以加入的东西。
标签: python python-2.7 web-scraping beautifulsoup