urllib2 使用代理服务器

相关博客:
Python 爬虫入门(二)—— IP代理使用:
http://www.cnblogs.com/hearzeus/p/5157016.html
python爬虫如何抓取代理服务器:
https://segmentfault.com/n/1330000005070016

# The proxy address and port:
proxy_info = { 'host' : 'proxy.myisp.com',
               'port' : 3128
             }

# We create a handler for the proxy
proxy_support = urllib2.ProxyHandler({"http" : "http://%(host)s:%(port)d" % proxy_info})

# We create an opener which uses this handler:
opener = urllib2.build_opener(proxy_support)

# Then we install this opener as the default opener for urllib2:
urllib2.install_opener(opener)

# Now we can send our HTTP request:
htmlpage = urllib2.urlopen("http://sebsauvage.net/").read(200000)

#如果代理需要验证
proxy_info = { 'host' : 'proxy.myisp.com',
               'port' : 3128,
               'user' : 'John Doe',
               'pass' : 'mysecret007'
             }
proxy_support = urllib2.ProxyHandler({"http" : "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
htmlpage = urllib2.urlopen("http://sebsauvage.net/").read(200000)
#该代码片段来自于: http://www.sharejs.com/codes/python/226

下面以*国内高匿代理IP*网站为实例,该网站提供代理服务器,但是正常爬去(IP,Port)只能爬取275条左右,本例利用前期爬去的275条代理服务器对网站进行继续的爬取:

#encoding=utf8
import urllib2
import BeautifulSoup
import random
from multiprocessing.dummy import Pool
def proxys():
    proxy_cont=open("proxy_avi.txt").read()
    ##proxy_avi是经过测试可用的代理服务器
    proxy_list=proxy_cont.split('\n')
    return proxy_list

def crawl_ip(page):
    print page
    User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'
    header = {}
    header['User-Agent'] = User_Agent

    for proxy in proxys():
        proxy={"http":proxy}
        proxy_support = urllib2.ProxyHandler(proxy)  # 注册代理
        # opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler(debuglevel=1))  ##构建open
        opener = urllib2.build_opener(proxy_support)
        urllib2.install_opener(opener)

        url = 'http://www.xicidaili.com/nn/' + str(page)
        req = urllib2.Request(url, headers=header)
        try:
            response = urllib2.urlopen(req, None,5)
            soup = BeautifulSoup.BeautifulSoup(response)
            ips = soup.findAll('tr')
        except Exception as e:
            continue

        with open("proxy.txt",'a+') as f:
            for x in range(1,len(ips)):
                ip = ips[x]
                tds = ip.findAll("td")
                ip_temp = tds[1].contents[0]+"\t"+tds[2].contents[0]+"\n"
                # print ip_temp
                # print tds[2].contents[0]+"\t"+tds[3].contents[0]
                f.write(ip_temp)
        print "final"
        break


if __name__=="__main__":
    pagelist=range(298,1011)
    pool=Pool(8)
    pool.map(crawl_ip,pagelist)
    pool.close()
    pool.join()

文本样式:
这里写图片描述

具体流程:
这里写图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值