ITPub博客

首页 > 应用开发 > Python > 应对网站反爬机制的处理

应对网站反爬机制的处理

原创 Python 作者:mmz_77 时间:2020-08-14 17:19:10 0 删除 编辑


在大数据如此火的今天,爬虫是其中不可或缺的一部分。作为一位爬虫我们都是知道想要获取数据也不是很容易的事,因为不管大大小小的网站都是做了很多反爬机制来阻碍我们的脚步,但是方法总比困难多。我们今天先来分析下网站都是用过哪些方式来阻止我们的。

1、验证码

2、ua

3、登陆验证

4、封账号

5、加密

6、ip限制

今天我们就重点来讲下网站的ip限制机制,很多网站会根据IP地址访问频率进行反爬,短时间内禁止IP访问,这时我们想采集数据 要么使用代理IP,要么伪装ip。那么对于ip我们要怎么解决了?

  • 自己自建ip池,每次访问网站的时候去选择代理,不过需要经常更新代理池。
  • 购买优质代理或动态转发(爬虫代理), 这是最省时省力的方法。
  • 网站抓取免费的ip来使用,虽然可行,但是效果不会很理想。
  • 间隔一定的时间在进行数据采集,但是这会大大的增加我们工作的时长。

以下我们分享下用代理来解决网站封ip的示例,对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。

        #! -*- encoding:utf-8 -*-        import requests        import random        # 要访问的目标页面        targetUrl = "要访问的目标HTTPS页面        # targetUrl = "代理服务器(产品官网 )        proxyHost = "t.16yun.cn"        proxyPort = "31111"        # 代理隧道验证信息        proxyUser = "16JVFLKJ"        proxyPass = "254565"        proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {            "host" : proxyHost,            "port" : proxyPort,            "user" : proxyUser,            "pass" : proxyPass,        }        # 设置 http和https访问都是用HTTP代理        proxies = {            "http"  : proxyMeta,            "https" : proxyMeta,        }        #  设置IP切换头        tunnel = random.randint(1,10000)        headers = {"Proxy-Tunnel": str(tunnel)}        resp = requests.get(targetUrl, proxies=proxies, headers=headers)        print resp.status_code        print resp.text


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31522063/viewspace-2711906/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-02-21

  • 博文量
    63
  • 访问量
    36838