使用handler技术,处理封闭IP的反爬技术

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib.request
import os


# 将用户名、密码、ip保存到环境变量中
proxy_server = os.environ.get('proxyServer')
user = os.environ.get('proxyuser')
pass_word = os.environ.get('password')

proxies = {
    'http': '%s:%s@%s' % (user, pass_word, proxy_server)
}
proxy_handler = urllib.request.ProxyHandler(proxies=proxies)
opener = urllib.request.build_opener(proxy_handler)
response = opener.open('http://www.baidu.com/')
print(response.read().decode('utf-8'))

# print('----------------------------------------------------------------------')

'''
import urllib
import urllib.request

urllib.request.urlopen(url='http://www.baidu.com')


# Request
# 构建请求,就是为了添加header,伪装成浏览器,获取登陆之后才能获取的数据(Cookie)

# Hanlder 引入,就是为了能够使用代理

httpHandler = urllib.request.HTTPHandler()

# 打开一个网址
opener = urllib.request.build_opener(httpHandler)

# 使用opener访问网络数据  urllib.request.urlopen()
request = urllib.request.Request(url='http://www.baidu.com/')

# response = opener.open(fullurl='http://www.baidu.com/')
response = opener.open(request)

print(response.read().decode('utf-8'))

'''
# print('----------------------------------------------------------------------')
'''
import urllib
import urllib.request

http_handler = urllib.request.HTTPHandler()


opener = urllib.request.build_opener(http_handler)
# 方式一,直接使用opener发起请求

# 方式二,将opener作为参数设置给urllib.request.urlopen
# opener去全局的联网请求
urllib.request.install_opener(opener)


# urllib.request.urlopen() 相当于使用opener.open()
response = urllib.request.urlopen('http://www.baidu.com/')
print(response.read().decode('utf-8'))
'''
# print('----------------------------------------------------------------------')
'''
#urllib2_proxy1.py
 
import urllib2
 
# 构建了两个代理Handler,一个有代理IP,一个没有代理IP
httpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"})
nullproxy_handler = urllib2.ProxyHandler({})
 
proxySwitch = True #定义一个代理开关
 
# 通过 urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象
# 根据代理开关是否打开,使用不同的代理模式
if proxySwitch:  
    opener = urllib2.build_opener(httpproxy_handler)
else:
    opener = urllib2.build_opener(nullproxy_handler)
 
request = urllib2.Request("http://www.baidu.com/")
 
# 1. 如果这么写,只有使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。
response = opener.open(request)
 
# 2. 如果这么写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。
# urllib2.install_opener(opener)
# response = urlopen(request)
 
print response.read()
'''

 https://blog.csdn.net/qq_32252917/article/details/79074219

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值