zoukankan      html  css  js  c++  java
  • 爬虫第五节 代理服务器设置

    # 代理服务器的设置
    # 有时使用同一个ip去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。那么怎样解决这个问题呢?
    # 解决的思路很简单,即“瞒天过海,暗度陈仓”。
    # 如果我们爬取别人网站的时候,在对方服务器上显示的是别人的ip地址,那么,即使 对方将显示出来的这个ip地址屏蔽了,也无关紧要,
    # 因为我们可以换另一个ip地址继续 爬取。
    # 使用代理服务器,就可以很好地解决这个问题。使用代理服务器去爬取某个网站的内容 的时候,
    # 在对方网站上,显示的不是我们真实的ip地址,
    # 而是代理服务器的ip地址。并且 在Python爬虫中,使用代理服务器设置起来也很简单。
    # 那么这些代理服务器可以从哪里找到呢?我们可以在互联网中搜索对应的代理服务器地址,
    # 当然也可以从整理好的网址http://www.xicidaili.com/nt/1中找到很多代理服务器地址。
    #通过网站就可以看到,这里会更新很多代理IP地址,我们尽量找验证时间比较短的,这些成功的概率会比较大,一些验证时间较长的,可能会失效。
    # 举例:我们可以选择第二个代理IP地址202.75.210.45,对应的端口号是7777,
    # 所以呢 ,完整的 格式为:“网址:端口号”,即 202.75.210.45:7777。

    # 用了代理IP地址之后,我们就可以进行相应程序的编写了、可以使用以下程序,实现 通过代理服务器来爬取网站内容。
    # 实例如下
    def use_proxy(proxy_addr, url):
    import urllib.request
    proxy = urllib.request.ProxyHandler({'http': proxy_addr})
    opener = urllib.request.build_opener(proxy, urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data = urllib.request.urlopen(url).read().decode('utf-8')
    return data


    proxy_addr = "113.240.254.154:8080"
    data = use_proxy(proxy_addr, "https://www.baidu.com")
    print(len(data))


    # 我们首先建立一个名为use_proxy的自定义函数,该函数主要实现使用代理服务器来爬取某个URL网页的功能。
    # 在函数中,我们设置两个形参,第一个形参为代理服务器的地址,第二个形参代表要爬取的网页的地址。
    # 然后,使用urllib.request.ProxyHandler()来设置对应的代理服务器信息,
    # 设置格式为: urllib.request.ProxyHandler ( {'http':代理服务器地址}),
    # 接下来,使用 urllib.request.build_ opener()创建了一个自定义的opener对象,
    # 其中第一个参数为代理信息,第二个参数为urllib. request.HTTPHandler类。
    # 为了方便,可以使用urllib.request.install_opener()创建全局默认的opener对象,
    # 那在使用urlopen()时亦会使用我们安装的opener对象,
    # 所以我们下面才可以直接使用urllib. request.urlopen()打开对应网址爬取网页并读取,编码后赋给变量data,最后返回data的值给函数。
    # 随后,在函数外设置好对应的代理IP地址,然后调用自定义函数use_proxy,并传递两 个实参,分别为使用的代理地址及要爬取的网址。
    # 将函数的调用结果赋值给变量data,并输 出data内容的长度。当然,也可以将data的值写进某个文件当中存储起来。

    # 执行下来就可以看到成功使用代理服务器爬取到了百度首页,并返回获取内容的大小。
    # 如果 此时代理服务器地址失效或填写错了代理服务器,则会发生错误,
    # 出现
    # urllib.error.URLError: <urlopen error [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
    #
    # 其中还有另外一个错误的可能
    # 如果出现以上错误除了找IP的问题还有就是http协议的问题
    # 解决办法:
    # 只是把协议改了一下就可以:
    # ‘http’-》‘https’,
    # 增加一点别的知识:
    # https就是http和TCP之间有一层SSL层,
    # 这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。
    # 另外是加密,加密需要一个密钥交换算法,双方通过交换后的密钥加解密。
  • 相关阅读:
    大数据时代的艺术金融
    与“数”同行:大数据驱动大学变革
    与“数”同行:大数据驱动大学变革
    财务信息化:大数据小时代
    财务信息化:大数据小时代
    Python导出DBF文件到Excel的方法
    Python导出DBF文件到Excel的方法
    SolrJ的入门
    Spring Data Solr入门
    使用solr进行配置文件
  • 原文地址:https://www.cnblogs.com/kwkk978113/p/12872717.html
Copyright © 2011-2022 走看看