美文网首页
python爬虫学习(五):代理服务器设置

python爬虫学习(五):代理服务器设置

作者: 记忆九天 | 来源:发表于2020-05-14 14:15 被阅读0次

    使用同一个ip频繁去爬取同一个网站的网页,可能会被屏蔽,这个时候,我们就可以使用代理服务器来解决这个问题。网上的免费获取代理服务器地址的网站,大家可以自行搜索,一般可以用他们提供的免费代理服务器地址,当然如果有钱的话,用付费的可能会靠谱一点。

    那么怎么利用这些个地址呢,我的建议是可以自己写一个爬虫(后面会写一个源码供大家参考),然后把上面的ip地址一个一个爬取出来,存放到一个文件,或者数据库,可以存在MongoDB里面。要用的时候,读取出来,就可以用来设置代理服务器地址了。代理服务器地址的更换,检验可用与否都可以通过代码整合起来调用。

    那么具体怎么设置呢,其实非常简单。这里我们主要讲urllib和requests两种方法的代理服务器设置,直接看代码,很容易就懂了。

    urllib设置方法

    import urllib.request
    
    def use_proxy(proxy_addr,url):
        proxy= urllib.request.ProxyHandler({‘http’:proxy_addr})
        opener = urllib.request.build_opener(proxy)
        request = urllib.request.Request(url)
        response = opener.open(request)
        print(response.headers)
        data = response.read().decode(‘utf-8’)
        return data
    proxy_addr=“183.148.140.162:9999” #代理地址
    data=use_proxy(proxy_addr,”http://www.baidu.com“)
    print(len(data))
    

    如果抛出urllib.error.URLError: 的异常,一般是代理地址太慢或者已经失效的问题,可以更换代理ip地址解决。

    requests设置代理的方法更简单,post方法也是一样。

    import requests
    proxies = {
      ‘http’: ‘http://61.176.223.7:58822‘
    }  #代理地址
    r = requests.get(“http://www.baidu.com“, proxies=proxies)
    print(r.headers)
    

    注:若代理需要使用HTTP Basic Auth,可以使用 http://user:password@host/语法:

    proxies = { “http”: “http://user:pass@10.10.1.10:3128/“, }

    由于免费的代理服务器地址都是不稳定的,很多都不能用或者不稳定,或者很快就失效了,所以如果有钱还是可以用付费代理ip地址会比较稳定啦。建议还是用requests方式进行请求,相对urllib的方法,比较方便。

    欢迎关注本人公众号和小程序,谢谢
    公众号 小程序

    相关文章

      网友评论

          本文标题:python爬虫学习(五):代理服务器设置

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