python spider handler

2018-08-12  本文已影响12人  xiongzenghui

1、公有代理ip

示例1

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

import urllib2

# 1、代理开关,表示是否启用代理
proxyswitch = False

# 2、根据是否开启代理开关,选择创建handler
if proxyswitch:
  # 构建一个Handler处理器对象,参数是一个字典类型,包括代理类型和代理服务器IP+PROT
  handler = urllib2.ProxyHandler({"http" : "124.88.67.54:80"})
else:
  # 构建了一个没有代理的处理器对象
  handler = urllib2.ProxyHandler({})

# 3、创建opener
opener = urllib2.build_opener(handler) 

# 4、构建了一个全局的opener,之后所有的请求都可以用urlopen()方式去发送,也附带Handler的功能
urllib2.install_opener(opener)

# 5、构造请求参数
request = urllib2.Request("http://www.baidu.com/")

# 6、所有的请求都可以用urlopen()方式去发送,就是使用之前的install_opener(opener)中的opener
response = urllib2.urlopen(request)

# 7、读取结果数据
#print response.read().decode("gbk")
print response.read()

示例2

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

import urllib2

# 代理开关,表示是否启用代理
proxyswitch = False

# 根据是否开启代理开关,选择创建handler
if proxyswitch:
  # 构建一个Handler处理器对象,参数是一个字典类型,包括代理类型和代理服务器IP+PROT
  handler = urllib2.ProxyHandler({"http" : "124.88.67.54:80"})
else:
  # 构建了一个没有代理的处理器对象
  handler = urllib2.ProxyHandler({})

# 创建opener
opener = urllib2.build_opener(handler) 

# 构造请求参数
request = urllib2.Request("http://www.baidu.com/")

# 使用opner发送请求
response = opner.open(request)

#print response.read().decode("gbk")
print response.read()

2、私有代理ip

示例1

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

import urllib2

# 1.
authproxy_handler = urllib2.ProxyHandler({
  "http" : "mr_mao_hacker:sffqry9r@114.215.104.49:16816"
})

# 2.
opener = urllib2.build_opener(authproxy_handler)

# 3.
request = urllib2.Request("http://www.baidu.com/")

# 4.
response = opener.open(request)

# 5.
print response.read()

示例2

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

import urllib2
import os

# 1. 获取系统环境变量的授权代理的账户和密码
proxyuser = os.environ.get("proxyuser")
proxypasswd = os.environ.get("proxypasswd")

# 2. 授权的代理账户密码拼接
authproxy_handler = urllib2.ProxyHandler({
  "http" : proxyuser+":"+proxypasswd+"@114.215.104.49:16816"
})

# 3. 构建一个自定义的opener
opener = urllib2.build_opener(authproxy_handler)

# 4. 构建请求
request = urllib2.Request("http://www.baidu.com/")

# 5. 获取响应
response = opener.open(request)

# 6. 打印内容
print response.read()

3、urllib2.HTTPBasicAuthHandler()

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

import urllib2

username = "test"
password = "123456"
webserver = "192.168.21.52"

# 1、构建一个密码管理对象,可以用来保存和HTTP请求相关的授权账户信息
passwordMgr = urllib2.HTTPPasswordMgrWithDefaultRealm()

# 2、添加授权账户信息
# -1)第一个参数realm如果没有指定就写None
# -2)后三个分别:站点IP、账户、密码
passwordMgr.add_password(None, webserver, username, password)

# 3、handler1: Auth
httpauth_handler = urllib2.HTTPBasicAuthHandler(passwordMgr)

# 4、handler2: Proxy
proxyauth_handler = urllib2.ProxyBasicAuthHandler(passwordMgr)

# 5、构建自定义opener = handler1 + handler2
opener = urllib2.build_opener(
  httpauth_handler, 
  proxyauth_handler
)

# 6、
#urllib2.install_opener(opener)

# 7、创建请求
request = urllib2.Request("http://192.168.21.52/")

# 8、用opener创建请求,附带Auth和Proxy
response = opener.open(request)

# 9、没有授权验证信息
#response = urllib2.urlopen(request)

# 10、读取结果数据
print response.read()
上一篇下一篇

猜你喜欢

热点阅读