听说你好不容易写了个爬虫,结果没抓几个就被封了?(附工具)

news/2024/7/19 12:14:09 标签: 爬虫, python

近来知乎上如雨后春笋般冒出了大把大把的爬虫教程。这是好事,学了 Python 基础的同学们可以很轻松地搜出许多练手的例子。不过我不是针对谁,我是说网上绝大多数的爬虫教程,其实都缺乏可操作性。

是的,也包括我自己写过的。

主要原因有两点:

  1. 教程是死的,网站是活的。页面会改版,接口会更新。一个爬虫教程的案例三个月之后还能有效已经是万幸了。比如我自己教程里的查天气案例,接口改动过很多次,数据也早就不更新。但发出去的文章被转发几次后就很难再维护更新了。我也只能在自己的论坛上发布更新消息和问题答疑:【Python 第43课】 查天气(1)。
  2. 但凡数据比较有价值的网站,一定都会有反爬措施,既是对数据的保护,也是避免机器流量干扰到正常用户的体验。所以光是写个网络请求,几乎不可能成功拿到数据。反爬措施千千万,应对反爬的手段万万千,这就是个不停斗智斗勇的过程,不存在一个教程就教会的万金油方法。

反爬里面最常见的一种手段就是,判断你的请求频率。如果你短时间内发送了大量的请求,甭管你是不是人,先封你账号或 IP 一段时间再说。所以,这就成了一个矛盾的地方:爬得太快会被封,爬得太慢又很耗时间。一般教程也许会说句:想要提升抓取效率并且降低被封的风险,可以使用代理 IP。然而这话说着倒轻松,网上免费的代理 IP 也不少,但每次找来能用的却没几个。总不至于每次为了写点小练习还去花钱买很多付费代理吧。况且现如今你真要买,也还未必能顺利买到可用的。

于是我们决定自己动手,一劳永逸地解决这个老大难问题:实现一个自动获取可用代理 IP 的接口。

基本思路还是从网上的几大免费平台获取 IP 地址,不同的是我们定期去检测 IP 的可用性。在调用接口时,提供可用性最高的 IP 地址列表。

网页上列出了几十个最新的推荐 IP,只是临时找几个做测试,可直接访问查看。

网页地址:http://lab.crossincode.com/pr...

API 接口地址:http://lab.crossincode.com/pr...

请求方法:GET

频率限制:不高于3秒1次

请求示例:

获取 5 个 IP

http://lab.crossincode.com/pr...

获取 5 个 HTTPS 的 IP

http://lab.crossincode.com/pr...

返回结果示例:

{
  "proxies": [
    {
      "http": "117.90.0.225:9000"
    },
    {
      "http": "186.154.146.26:8080"
    },
    {
      "http": "175.155.25.27:808"
    },
    {
      "http": "124.88.67.52:843"
    },
    {
      "http": "119.5.0.7:808"
    }
  ],
  "code": 1
}

于是,在你做爬虫练习时,只要通过接口获取几个 IP,作为你请求的 proxy,即可大大提高抓取的效率。目前我们自己的爬虫项目都在使用此接口。

不过仍然要说明,即使经过多次验证,也无法保证一个 IP 的绝对可用性。不同时间不同地域不同网络都有可能导致请求超时或失效。所以你的代码中也还是需要自己做好相应的异常处理。这是个概率问题,工具的作用只是尽可能提高概率。

我们不生产 IP,我们只是互联网的搬运工。

完整的接口参数说明,以及项目的源代码,可在公众号(Crossin的编程教室)后台回复 IP


http://www.niftyadmin.cn/n/1776374.html

相关文章

PhpStorm+Apache+Xdebug3开发调试环境搭建

我搭建过C/C/Go/Nodejs/Python等开发调试环境,PHP的是最难搭建的,因为PHP的调试工具是PhpStorm,而服务器是Apache,调试模块是Xdebug(2和3还不同),加上PHP有各种调试姿势,比如还有ZEN…

面对对象三大特征:继承 多态(鸭子类型)(面试题)

继承:至少两个类: 什么是什么的关系,为了避免几个类之间有相同的代码 组合:什么有什么的关系 父类:基类或超类 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 类的继承…

Hadoop On Demand用户指南

本文讲的是Hadoop On Demand用户指南,【IT168 资讯】后面的文档包括一个快速入门指南能让你快速上手HOD,一个所有HOD特性的详细手册,命令行选项,一些已知问题和故障排除的信息。HOD使用入门  在这部分,我们将会逐步骤…

如何开发宝塔插件

宝塔管理服务器比较方便,管理网站和数据库,安装各种插件,比较灵活。如果能用宝塔安装云SRS,那可以在很多云和虚拟机都可能安装了。 说干就干,先去下载资料,宝塔插件的官方手册和官方论坛,还有官…

linux ssh登录安全设置

ssh服务是最常用的远程登录服务,虽然其比telnet安全多,但是也存在一定的安全漏洞。一些不友好的小伙伴们会使用一些不和谐程序对ssh服务进行暴力破解。对ssh服务进行适当的配置可以完全杜绝暴力破解。同时对sshd服务进行优化配置可以加快连接速度&#x…

SRS视频教程

SRS有丰富的视频教程,包括SRS的使用和开发定制,FAQ即常见问题,还有课程链接。 Note: 不过视频并不能完全替代文档,文档是最全面的、最系统化的,希望大家不要忽略文档,可以看 FAQ: SRS有哪些文档和资料 SRS …

接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)

背景 博主的主要工作是测试API,目前已经用JmeterJenkins实现了项目中的接口自动化测试流程。但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(implicit grant type)。所以最近学习了一下该协议…

SRS云服务器:起步、购买和入门

云SRS是一个开源的音视频服务方案,多个音视频场景中开箱即用,组合使用了SRS、FFmpeg、WebRTC等项目,无门槛赋能小微企业,让小微企业轻松具备数字化能力。 使用起来非常简单,不熟悉服务器和命令行也可以使用&#xff0…