我正在尝试从http://feeds.reuters.com/~r/reuters/technologyNews/~3/ZyAuZq5Cbz0/story01.htm获取 Body-Tag
但 BeautifulSoup 没有找到它。这是因为无效的 HTML 吗?如果是这样,我该如何防止这种情况?
我还尝试使用 PyTidyLib ( http://countergram.com/open-source/pytidylib/docs/index.html )为 HTML 错误添加前缀
这是一些代码:
def getContent(url, parser="lxml"):
request = urllib2.Request(url)
try:
response = opener.open(request).read()
except:
print 'EMPTY CONTENT',url
return None
doc, errors = tidy_document(response)
return parse(url, doc)
def parse(url, response, parser="lxml"):
try:
soup = bs(response,parser)
except UnicodeDecodeError as e:
if parser=="lxml":
return parse(url, response, "html5lib")
else:
print e,url
print 'EMPTY CONTENT',url
return None
body = soup.body
...
当我打印出 Soup 时,我可以看到打开和关闭 body-Tag,但是在 body = soup.body 之后,我得到了 None。
我正在使用 Python 2.7.3 和 BeautifulSoup4 它似乎可以与 BeautifulSoup3 一起使用,但由于性能问题我需要坚持使用 BS4。