爬虫-urllib模块的使用

  • 代理IP的原理:以本机先访问代理IP,再通过代理IP地址访问服务器,这样服务器接受到的访问IP就是代理IP地址。

    from urllib.request import build_opener,urlopen(),install_opener,Request,ProxyHandler
    
    

    构建了两个代理Handler,一个有代理IP,一个没有代理IP

    httpproxy_handler = urllib2.ProxyHandler({'http': '218.18.232.26:80', 'https': '218.18.232.26:80'}) nullproxy_handler = urllib2.ProxyHandler({}) proxySwitch = True #定义一个代理开关

    通过build_opener()方法使用这些代理Handler对象,创建自定义opener对象

    根据代理开关是否打开,使用不同的代理模式

    if proxySwitch:
    opener = build_opener(httpproxy_handler) else: opener = build_opener(nullproxy_handler) request = Request("http://www.baidu.com/")

    1. 如果这么写,只有使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。

    resp = opener.open(request)

    2. 如果这么写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。

    install_opener(opener)

    resp = urlopen(request)

    print (resp.read().decode())

    如果代理需要授权验证,简单的方式是只需要在ProxyHandler传入的参数字典中,将值改为’用户名:密码@ip:端口号’这种形式,比如{“http”:”myname:mypasswd@124.88.67.81:80″},复杂一点的需要创建一个密码管理对象,下面会有介绍。