美文网首页
python spider handler

python spider handler

作者: xiongzenghui | 来源:发表于2018-08-12 17:52 被阅读12次

    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()

    • 1、build_opener
    • 2、httpauth handler
    • 3、proxyauth handler
    • 4、build_opener 创建 request,就会附带如上上面两种handler处理
    #!/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()
    

    相关文章

      网友评论

          本文标题:python spider handler

          本文链接:https://www.haomeiwen.com/subject/hnasbftx.html