我正在尝试使用Udacity的python类构建一个搜索引擎。 在某一点,我运行我的程序,并与一大堆其他东西得到这个错误。有人可以帮助我开始理解所有这些错误。
追踪(最近一次呼叫最后一次):
File "E:\Python codes\MySearchEngine.py", line 106, in <module>
crawl_web(startPage)
File "E:\Python codes\MySearchEngine.py", line 66, in crawl_web
linksToFollow = followLinks(toCrawl)
File "E:\Python codes\MySearchEngine.py", line 53, in followLinks
linkPageContent = get_page(link)
File "E:\Python codes\MySearchEngine.py", line 4, in get_page
page = urllib2.urlopen(page).read()
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 392, in open
protocol = req.get_type()
File "C:\Python27\lib\urllib2.py", line 254, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
答案 0 :(得分:0)
我想我知道你的问题是什么,这只是因为我过去自己也犯了类似的错误。您需要指定网址类型。要演示,请查看以下脚本:
from urllib.request import urlopen as u
u('google.com')
运行时,这个小脚本会出现错误:ValueError: unknown url type: google.com
,这是你完全相同的问题。但是,当我将第二行更改为:
u('http://google.com')
它工作正常。
因此,我认为您需要将'http://'
或您正在使用的任何网址类型添加到self.__original
的前面。