我是python的新手。写了一个小程序来获取页面中的所有链接。我正在使用python 2.7,这是Ubuntu附带的。我使用不同的来源将代码放在一起,但似乎我要么错过了一个库,要么使用正确的库来安装错误的python版本。
import sys
from bs4 import *
import urllib2
import re
if len(sys.argv) != 2:
print "USAGE:"
print "Python test.py Your_URL"
else:
url = sys.argv[1]
html_page = urllib2.urlopen(url)
soup = BeautifulSoup(html_page)
for link in soup.findAll('a'):
print link.get('href')
我收到此错误:
Traceback (most recent call last):
File "test.py", line 12, in <module>
html_page = urllib2.urlopen(url)
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 421, in open
protocol = req.get_type()
File "/usr/lib/python2.7/urllib2.py", line 283, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: www.cs.odu.edu
我在python之后安装了bs4,urlib。仍然是同样的错误。
sudo apt install python
sudo apt install python-pip
sudo pip install bs4
答案 0 :(得分:2)
在没有协议的浏览器中输入URL时,默认为HTTP。 urllib2不会为你做出这样的假设;你需要在它前面加上http://。
重复的: ValueError: unknown url type in urllib2, though the url is fine if opened in a browser
答案 1 :(得分:2)
尝试在网址前指定http或https,它肯定会有效。