在python 2.7

时间:2017-01-22 17:49:11

标签: python python-2.7 beautifulsoup

我是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

2 个答案:

答案 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,它肯定会有效。