2012-11-13 58 views
0

我已经在位置C:\ webpage.htm保存了一个网页。我想加载它并使用BeautifulSoup进行分析,但是urllib不会打开它。Python与保存的网页urlopen错误

from BeautifulSoup import BeautifulSoup 
import urllib2 

url="C:\webpage.htm" 

page=urllib2.urlopen(url) 

这引发了错误:

Traceback (most recent call last): 
    page=urllib2.urlopen(url) 
    File "C:\Python27\lib\urllib2.py", line 126, in urlopen 
    return _opener.open(url, data, timeout) 
    File "C:\Python27\lib\urllib2.py", line 400, in open 
    response = self._open(req, data) 
    File "C:\Python27\lib\urllib2.py", line 423, in _open 
    'unknown_open', req) 
    File "C:\Python27\lib\urllib2.py", line 378, in _call_chain 
    result = func(*args) 
    File "C:\Python27\lib\urllib2.py", line 1240, in unknown_open 
    raise URLError('unknown url type: %s' % type) 
urllib2.URLError: <urlopen error unknown url type: c> 

如何解决这个问题或有另一种方式来加载文档转换成美丽的汤(我曾试图把它保存为文本文件,但该扔了错误:

'str' object has no attribute 'findall' 

回答

3

看来你必须指定协议在这种情况下,你可能想要做的是这样的:

from BeautifulSoup import BeautifulSoup 
import urllib2 
url="file:///C:/webpage.html" 
page=urllib2.urlopen(url) 
+0

谢谢西尔维斯特,这工作!不过,我使用Firefox保存了它,所以只有.htm才有效。 – user578582

3

由于您正在从本地计算机加载文件,因此不需要使用urllib2。相反,你可以使用Python的标准文件I/O函数:open(),read()和close()

from BeautifulSoup import BeautifulSoup 
url="C:\webpage.htm" 
f = open(url) 
# read entire file as a string 
page=f.read() 
soup=BeautifulSoup(page) 
# etc... 
f.close() 
+1

谢谢MrPhil,那也可以,但我认为应该是f = open(url)。 f.open抛出错误“f未定义” – user578582