【问题标题】:Python urlopen error with saved webpage保存网页的Python urlopen错误
【发布时间】:2012-11-13 15:46:51
【问题描述】:

我在 C:\webpage.htm 位置保存了一个网页。我想加载它并使用 BeautifulSoup 分析它,但是 urllib 不会打开它。

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'

【问题讨论】:

    标签: python beautifulsoup urllib2


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢西尔维斯特,这行得通!但是我使用 Firefox 保存了它,所以只有 .htm 有效。
    【解决方案2】:

    由于您是从本地计算机加载文件,因此您不需要使用 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()
    

    【讨论】:

    • 谢谢菲尔先生,这也可以,但我认为应该是 f = open(url)。 f.open 抛出错误“f is not defined”
    猜你喜欢
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2018-09-29
    • 2011-07-12
    相关资源
    最近更新 更多