c 抓取网页数据(简单笼统的说,爬数据搞定以下几个部分,就可以小打小闹一下了)

优采云 发布时间: 2021-11-25 03:16

  c 抓取网页数据(简单笼统的说,爬数据搞定以下几个部分,就可以小打小闹一下了)

  简单来说,一般来说,如果你爬取数据得到以下部分,你可能会遇到一些麻烦。

  一、 指定 URL 格式,例如 知乎 问题的 URL 为 /question/xxxx,然后抓取 html 内容。使用的工具,如果你有很好的规律性,你可以使用规律性。如果觉得规律性很麻烦,可以使用html解析DOM节点来处理内容。如果你爬取的内容有自己固有的特性,比如新闻内容,可以使用body爬取算法,其实就是在html中找出最长的几行字符串。

  二、 使用javascript动态生成内容爬取。不推荐使用headless,效率比较低。建议使用一些开源库直接执行js代码,得到想要的结果。

  了解页面中的程序逻辑非常重要。知道动态内容是如何生成的,使用一定的方法,就会和html一样,很容易得到你想要的结果。动态生成要么是在本地进行计算,要么是向服务器发起另一个请求以获得某个结果,显示或再次进行本地计算。对于前者,需要找到本地执行的那段代码,照原样,在javascript环境中执行,得到结果。对于后者,找到请求并得到相应的结果。一般结果也会是javascript代码或者json格式的字符串,可以再次解析。

  三、登录,有很多资料需要登录才能查看。如果对方使用https,基本没有办法。好在国内很多网站在全站打广告的都是伪https,都可以像抓包一样抓到。比较复杂的会为用户名或密码重新加密,并且是时间相关的,直接提交给用户名和密码无效。您必须同时提交以当前时间为参数的第二次加密结果。同样,理解页面中的程序逻辑很重要。

  四、验证码,当你取的太多太快时,网站一般会要求你输入验证码,证明你不是程序,而是手动操作。国内好像有云服务可以帮你输入验证码,修复这部分,或者用程序解析验证码,但是错误率太高了。另一种流氓方法是使用多个ADSL或VPN,来回切换IP,不断换IP进行爬取,将单个IP的爬取速度控制在网站的允许范围内,改什么header header代理比较简单,就不多说了。

  五、 内容如图,网站 类别中的一些敏感信息,如商城价格、用户手机号码等,会直接由网站 显示在图片的形式。在这里,使用云服务的成本太高了。如果用程序解析图片,如果出错,这个信息基本没用。切换IP也是图,所以基本无解。

  六、另外,爬虫还有很多细节和针对性的处理方式。为了学习的目的,我们需要多思考。比如移动互联网这么火,很多网站,有点厉害的会从手机客户端出来在手机客户端,他还用图片来展示吗?现在html5出来了,很多手机客户端都是用html+js重新打包的。

  ———————— 分界线,探讨抢夺的可持续性—————————

  一个网页上有n个以上的链接,这意味着你会遇到从一个页面开始的链接数,然后以这种方式扩展1*n*n*n。同时,会出现重复的链接,所以如何保存爬取到的链接,以及如何过滤掉符合一定条件的链接,将是你需要解决的一个新问题。

  好吧,当你有一个链接处理机制来帮你管理你爬取的所有链接时,你的爬虫的爬取效率就变得非常高效了,效率高到你的爬虫被目标拦截了网站,你该如何解决? 关于更改标题,我不会说太多。我只说说怎么解决key阻塞ip?

  你需要让你的爬虫分布式,以中央服务器为任务调度中心,对爬取的页面进行处理,将爬取到的链接分发给所有下属机器。

  下级机只做一件事,就是向中央服务器请求一个任务,执行完请求的任务后,将结果返回给调度中心。每个从机只是一个一年几十块的虚拟机,我们要的是从机的IP。

  好了,现在你有n个ip分散在n台机器上为你做爬虫,数据统一集中在你躲在幕后的中央服务器上。效率非常高。一般你控制的好,目标服务器是不会发现的。某个ip请求太频繁,流量太高,但事情可能就是这么不正常!目标服务器还是找到了你!杀死你所有的小爬虫!怎么做?

  你需要优化调度中心的东西。您的中央服务器不能只是将任务平均分配给每个从属机器。您需要实时监控每个下属机器的任务数量和执行状态。让他安息,免得他被杀。为什么这不在从属机器上做?因为我们使用的虚拟机每年价值几十美元!!成本!!你有钱买一台一年几千块的机器我没说!!

  好了,现在你的任务调度中心很聪明,保证每个下属机器的任务不会太高。如果觉得效率还低,直接开个虚拟机就好了。还有很多ip。还可以很好的控制访问的频率和流量,链接管理也很好。基本上,爬虫的框架都有一个原型。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线