学 Java 网络爬虫,需要哪些基础知识?
这是一种比较常见的反爬虫机制,网站通过检查 Request Headers 中的 User-Agent 、Referer 参数,来判断该程序是不是爬虫程序。要绕过这种机制就比较简单,我们只需要在网页中先查看该网站所需要的 User-Agent 、Referer 参数的值,然后在爬虫程序的 Request Headers 设置好这些参数就好啦。 基于用户行为的反爬虫机制 这也是一种常见的反爬虫机制,最常用的就是 IP 访问限制,一个 IP 在一段时间内只被允许访问多少次,如果超过这个频次的话就会被认为是爬虫程序,比如豆瓣电影就会通过 IP 限制。 对于这种机制的话,我们可以通过设置代理 IP 来解决这个问题,我们只需要从代理ip网站上获取一批代理ip,在请求的时候通过设置代理 IP 即可。 除了 IP 限制之外,还会有基于你每次的访问时间间隔,如果你每次访问的时间间隔都是固定的,也可能会被认为是爬虫程序。要绕过这个限制就是在请求的时候,时间间隔设置不一样,比例这次休眠 1 分钟,下次 30 秒。 基于动态页面的反爬虫机制 有很多网站,我们需要采集的数据是通过 Ajax 请求的或者通过 JavaScript生成的,对于这种网站是比较麻烦的,绕过这种机制,我们有两种办法,一种是借助辅助工具,例如 Selenium 等工具获取渲染完成的页面。第二种方式就是反向思维法,我们通过获取到请求数据的 AJAX 链接,直接访问该链接获取数据。 以上就是爬虫的一些基本知识,主要介绍了网络爬虫的使用工具和反爬虫策略,这些东西在后续对我们的爬虫学习会有所帮助,由于这几年断断续续的写过几个爬虫项目,使用 Java 爬虫也是在前期,后期都是用 Python,最近突然间对 Java 爬虫又感兴趣了,所以准备写一个爬虫系列博文,重新梳理一下 Java 网络爬虫,算是对 Java 爬虫的一个总结,如果能帮助到想利用 Java 做网络爬虫的小伙伴,那就更棒啦。Java 网络爬虫预计会有六篇文章的篇幅,从简单到复杂,一步一步深入,内容涉及到了我这些年爬虫所遇到的所有问题。下面是模拟的六篇文章介绍。 1、网络爬虫,原来这么简单 这一篇是网络爬虫的入门,会使用 Jsoup 和 HttpClient 两种方式获取到页面,然后利用选择器解析得到数据。最后你会收获到爬虫就是一条 http 请求,就是这么简单。 2、网页采集遇到登录问题,我该怎么办? 这一章节简单的聊一聊获取需要登录的数据,以获取豆瓣个人信息为例,从手动设置 cookies 和模拟登陆这两种方式简单的聊一聊这类问题。 3、网页采集遇到数据 Ajax 异步加载,我该怎么办? 这一章节简单的聊一聊异步数据的问题,以网易新闻为例,从利用 htmlunit 工具获取渲染完页面和反向思维直接获取到 Ajax 请求连接获取数据两种方式,简单的聊一下这类问题的处理方式。 4、网页采集 IP 被封,我该怎么办? IP 访问被限制这应该是常见的事情,以豆瓣电影为例,主要以设置代理IP为中心,简单的聊一聊 IP 被限制的解决办法,还会简单的聊一下如何搭建自己的ip代理服务。 5、网络采集性能太差,我该怎么办? 有时候对爬虫程序的性能有要求,这种单线程的方式可能就行不通了,我们可能就需要多线程甚至是分布式的爬虫程序啦,所以这一篇主要聊一聊多线程爬虫以及分布式爬虫架构方案。 6、开源爬虫框架 webmagic 使用案例解析 (编辑:萍乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |