Python3.x爬虫---代理服务器的设置

当使用同一个IP去爬取同一个网站的网页时,次数多了或者时间久了,该网站服务器就会对这个IP进行屏蔽,而这也是我们爬虫程序必须要解决的一个问题。如何去解决这个问题呢?

如果有HTTP基础,就知道有一种叫做代理服务器的东西,而我们也可以使用这个代理服务器解决上述问题。

基本思路:在爬取网页的时候,在对方服务器上显示的是别人的IP地址,那么,即使对方将显示出来的这个IP地址进行屏蔽,那么我们可以再次换另一个IP地址进行网站爬取。

基本原理:使用代理服务器时,在对方服务器上显示的不是我们真实的IP地址,而是代理服务器的IP地址

一般情况下,我们不仅需要知道IP地址,还需要知道网络端口号,即:IP地址:端口号的形式。

以下是具体代码:

#导入库
import  urllib.request

#定义一个函数
def use_proxy(addr,url):
    """使用代理服务器
    addr:代理服务器的IP
    url:要爬取的网页URL
    """
    #使用urllib.request.ProxyHandler()来设置对应的代理服务器信息
    proxy=urllib.request.ProxyHandler({'http':addr})
    #urllib.request.build_opener()创建一个Opener对象,第一个参数为代理信息,第二个参数为urllib.request.HTTPHandler
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    #使用urllib.request.install_opener(opener),注册(安装)opener对象
    urllib.request.install_opener(opener)
    #urllib.request.urlopen(url).read().decode('utf-8')打开对应的网页读取数据,编码后赋值给变量data
    data=urllib.request.urlopen(url).read().decode('utf-8')
    #返回data
    return data

addr="202.75.210.45:8888"
data=use_proxy(addr,"http://www.baidu.com")
print(data)

猜你喜欢

转载自blog.csdn.net/bao_120973681/article/details/84147235