【发布时间】:2012-05-25 16:59:59
【问题描述】:
我想从某个网站上抓取 HTML,然后将其发送到 BeautifulSoup 进行解析。问题是 urllib2.urlopen() 返回的 HTML 包含换行符 (\n) 和制表符 (\t) 以及单引号和其他字符转义。当我尝试使用此 HTML 构建 BeautifulSoup 对象时,出现错误。
b = BeautifulSoup(src)
我的代码:
def get_page_source(url):
"""
Retrieves the HTML source code for url.
"""
try:
return urllib2.urlopen(url)
except:
return ""
def retrieve_links(url):
"""
Use the BeautifulSoup module to efficiently grab all links from the source
code retrieved by get_page_source.
"""
src = get_page_source(url)
b = BeautifulSoup(src)
.
.
.
我该如何解决这个问题?
编辑
import urllib2
link = "http://www.techcrunch.com/"
src = urllib2.urlopen(link).read()
f = open('out.txt', 'w')
f.write(src)
f.close()
【问题讨论】:
-
我通常通过 Tidy(它有一个 Python 模块)运行我的 HTML,然后用 BeautifulSoup 解析它。奇怪的是,我从未看到过这个错误。您一定是在解析一些严重损坏的 HTML。
-
这是我第一次遇到这个错误,之前我已经大量使用了 urllib2。
标签: python beautifulsoup urllib2