属性错误:addinfourl实例没有'get_type'属性。

3

好的,我正在尝试使用beautiful soup中的opener从页面中提取一些信息,我认为这就是问题所在。我需要使用opener,因为我需要通过Tor路由它,因为我认为他们已经阻止了多个请求。

(如果这一切都没有格式化,我会立即编辑,因为通常会发生奇怪的事情。)

以下是代码:

def getsite():
    proxy = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
    opener = urllib2.build_opener(proxy)
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    url = opener.open('https://www.website.com')
    try:
        page = BeautifulSoup(urllib2.urlopen(url).read())
    except Exception as Err:
        errorlist.append('Unexpected Error ' + str(Err))
        time.sleep(60)
        page = BeautifulSoup(urllib2.urlopen(url).read())
    values = page.findAll("strong")
    high = values[2]
    low = values[1]
    last = values[0]
    vol = values[3]

    high = str(high)
    low = str(low)
    last = str(last)
    vol = str(vol)
    high = high[8:-13]
    low = low[8:-13]
    last = last[8:-13]
    vol = vol[8:-24]


    print high, low, last, vol

while True:
    getsite()
    time.sleep(3200)

然后它会抛出这个错误。

page = BeautifulSoup(urllib2.urlopen(url).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() AttributeError: addinfourl instance has no attribute 'get_type'
1个回答

7

看起来你正在使用opener对象,就好像它是一个URL:

page = BeautifulSoup(urllib2.urlopen(url).read())

如果 url 是打开的opener,那么请不要这样做,而是:

page = BeautifulSoup(url.read())

呃,我不太确定我理解了那个。它可以工作,但那不再使用opener了,对吧?能否请你再解释一下?编辑:没关系,我搞混了。谢谢伙计。 - tommo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接