JAVA处理爬虫逻辑的相关信息整理、代码实现、逻辑整理
工作中偶然需要用到,于是有一些利用及学习。发现它是一个在某些方面很有效率的工具、比如功能测试、获取数据、分析业务等。python也许是爬虫的最优开发语言,但自己的主语言是Java,使用起来更得心应手一些。所以还是用Java处理爬虫。
一、爬虫相关的环境
工欲善其事、必先利其器。以下是整理的一些过程中用到的工具(待补充)。
工具(用的趁手就好)
- firefox/chrome:浏览器,以可视化方式操作,可以快速分析页面元素。
- selenium+相关浏览器驱动:自动化测试工具,模拟用户的浏览器操作。
- plantojs:无头浏览器模式,已淘汰,可找相关替代品。
- Jsoup:html解析工具
- webmagic:java语言开源的一个爬虫工具,比较简单方便。
技术(照猫画虎也能用,但是了解其原理更有助于扩展)
- HTML/CSS:了解html的标签含义,以及基本属性、css的使用。
- HTTP/HTTPS:了解get/post请求的原理,url/header/body的部分参数及相应含义。
- IO/文件处理:因为会涉及到一些图片/文件的下载,以及文件的处理(如验证码图片的解析)。
- JavaScript:了解一些ajax,jquery等技术的异步操作。
- 爬虫思维:了解一些反爬机制,爬取的效率/仿真处理等。
- 编码/解码、乱码处理:可能会碰到一些相关问题。
- 代理/分布式:可能会用到的一些设计。
简单参考:java使用webmagic爬取网页内容的基本环境准备
这里是之前的一些简单整理
在练习的过程中,就会碰到各种各样的问题,会发现python提供的资源库更加丰富、有效一些。java的相关依赖库比较少或者效果差。
- Mac系统安装python3.7.3并安装Scrapy爬虫框架
- Scrapy在MAC环境的安装、Scrapy引擎基本介绍、简单的创建命令功能实践
- Scrapy根据XPATH解析页面内容、下载为json格式文件、抓取列表页等的简单示例
- 在JAVA中通过jsoup获取url中的html元素的简单代码示例
二、验证码相关
很多网站为了防止爬虫获取信息,或者影响服务器的运行,做了很多反爬的措施,验证码就是其中之一。
当然现在已经出现了各种各样的验证码。从普通的图片验证码、滑动验证码、极验验证码到reCAPTCHA、12306令人发指的选图验证码,当然还有手机验证码。
1. 图片验证码
JAVA生成图片验证码的简单代码实现(干扰线、字扭转、ocr识别)
当然,这里也可以购买第三方的识别服务进行处理。(听说是一堆人守着电脑,人工识别处理,全天二十四小时服务。应该是有自动化工具吧)
2.极验验证码
【滑动】JAVA使用selenium破解极验验证码(下载背景图+识别缺口+移动轨迹处理)
【点选】JAVA模拟点选验证码的简单尝试
还有其他的,手势、图片选择、九宫格一类的相比滑动更加艰难,技术不够,好难
3.ip代理,三方动态代理
具体代理自己找或者购买
JAVA利用httpClient-jsoup-chromeDriver设置IP代理或者三方动态代理
其他待续…
碰到的一个反爬场景,它吃光了对应机器的内存,导致应用服务也没法正常使用
原创文章,转载请标明本文链接: JAVA处理爬虫逻辑的相关信息整理、代码实现、逻辑整理