2
Posted on 下午7:01:00 by Fan Zhang and filed under

  之前说过使用 Python 登陆网站,我们已经可以获取任意一个网址的数据了。但是,在实际应用中,代理服务器往往是少不了的。

  在 urllib2 模块中,每一个 opener 可以用多个 handler 来增强功能,在前一篇,我们使用的是 Cookie 的支持,我们只要在这里再加上 proxy 支持就可以了。

#!/usr/bin/env python
# -*- coding: GB2312 -*-
# 

from urllib import urlencode
import cookielib, urllib2

# 准备cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)

# 设置代理服务器
proxy_info = {  
        'host' : '127.0.0.1' ,
        'port' : 8118
}
proxy_support = urllib2 . ProxyHandler ( { 'http' : \
        'http://%(host)s:%(port)d' % proxy_info } ) 

# 构造opener
opener = urllib2.build_opener(cookie_support, proxy_support)
urllib2.install_opener(opener)

# 打开网页
page = urllib2.urlopen("http://www.163.com")
print page.read(1000)
page.close()
2
评论 : Python:通过代理访问网络
Tarmy 说... 2008年11月10日 上午11:04

import os,sys,urllib2

PROXY_INFO = {
'user' : 'ma' ,
'pass' : 'song' ,
'host' : '60.248.143.173' ,
'port' : 3370
}

def load_url(url):
proxy_support = urllib2.ProxyHandler ( { 'http' : \
'http://%(user)s:%(pass)s@%(host)s:%(port)d' % PROXY_INFO } )
opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
src = urllib2.urlopen(url)
#src = opener.open(url)
return src.read()

if __name__=='__main__':
#content = load_url("http://www.elance.com/job?jobid=15652044&catId=12502")
content = load_url("http://www.google.cn")
print content

我单独测试代理,总返回“urlopen error (10054, 'Connection reset by peer')“这个错,麻烦指点下

晓月 说... 2008年11月10日 下午12:14

代理是对的吗

发表评论