美文网首页大数据 爬虫Python AI Sql程序员
爬虫基础之urllib的简单使用 - 代理的使用(三)

爬虫基础之urllib的简单使用 - 代理的使用(三)

作者: 小飞牛_666 | 来源:发表于2018-04-24 23:06 被阅读75次
    由于有些网站不喜欢被程序访问,因此他们会检查链接的来源,如果访问来源不是正常的途径,就给你“掐掉”。所以为了让我们的爬虫更好的为我们服务,需要对代码进行一些改进——隐藏,让他看起来更像是普通人通过普通浏览器的正常点击。但是这仅仅是最简单的方式了,如果这要是用于爬取网页爬虫(例如说批量下载图片。。。),那么一个IP在短时间之内连续进行网页的访问,很明显是不符合普通人类的行为标准的,同事对服务器造成不小的压力。因此服务器只需要记录每个IP的访问频率,在单位时间之内,如果访问频率超过一个阈值,便认为该IP地址很可能是爬虫,于是可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话当然不可能填写验证码,便可拒绝。
    以我们目前的水平,有两种策略可以提供选择:第一种就是延迟提交的时间,还有一种策略就是使用代理。
    下面我们就以代理的方式对本地IP页面进行访问:

    代理地址:http://www.xicidaili.com

    #使用代理获取网页数据  访问本地IP
    def use_proxy_request(proxy_addr, url):
        #参数是一个字典,字典的键是代理的类型,如 http、ftp 或 https
        proxy = urllib.request.ProxyHandler({"http":proxy_addr})
        #当 urlopen() 函数打开一个网页的时候默认的使用 opener 在工作,可认为是私人定制
        opener = urllib.request.build_opener(proxy, urllib.request.HTTPHandler)
        #定制请求头
        opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36")]
        #将定制好的 opener 安装到系统中
        urllib.request.install_opener(opener)
        #请求
        response = urllib.request.urlopen(url)
        data = response.read().decode("utf-8")
        return data
    
    
    #调用
    proxy_addr = "60.177.224.13:18118"
    url = "http://www.whatismyip.com.tw/"
    data = use_proxy_request(proxy_addr, url)
    print(data)
    
    

    接下来我们执行代码出现如下效果即可访问成功:

    a.png

    相关文章

      网友评论

        本文标题:爬虫基础之urllib的简单使用 - 代理的使用(三)

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