网站首页 > java教程 正文
网络爬虫框架
写网络爬虫,一个要有一个逻辑顺序。本文主要讲解我自己经常使用的一个顺序,并且本人经常使用这个框架来写一些简单的爬虫,复杂的爬虫,也是在这个基础上添加其他程序。
首先,我的工程都是使用maven建的。使用Spring MVC框架编写过网站的同学,可以看出框架的重要性与逻辑性。在我的网络爬虫框架中,包含的package有db、main、model、parse、util五个文件。
db:主要放的是数据库操作文件,包含MyDataSource【数据库驱动注册、连接数据库的用户名、密码】,MYSQLControl【连接数据库,插入操作、更新操作、建表操作等】。
model:用来封装对象,比如我要获取京东书籍的ID、书名、价格,则需要在model写入对应的属性。说的直白一些,封装的就是我要操作数据对应的属性名。
util:主要放的是httpclient的内容,主要作用时将main方法,传过来的url,通过httpclient相关方法,获取需要解析的html文件或者json文件等。
parse:这里面存放的是针对util获取的文件,进行解析,一般采用Jsoup解析;若是针对json数据,可采用正则表达式或者fastjson工具进行解析,建议使用fastjson,因其操作简单,快捷。
main:程序起点,也是重点,获取数据,执行数据库语句,存放数据。
网络爬虫的逻辑顺序
针对我的网络爬虫框架,网络爬虫的逻辑顺序,可以描述为:首先,main方法,将url传给util获取响应的html文件,然后util将其获得的html文件,传给parse进行解析,获取最终数据,封装在集合中。解析完毕后,数据返回到main,接着main操作db将数据导入到mysql中。
网络爬虫实例教学
通过上面的框架,我们可以看出写一个网络爬虫,其实很简单(当然有很复杂的网络爬虫哦)。下面,我将带大家写一个基于java爬虫京东图书信息的网络爬虫,只是做讲解使用,供大家学习和参考。
首先,起点是什么?你可能觉得是main方法,其实不然,起点是你要知道你要获取网站中的哪些数据,然后针对要抓取的数据去写model。如下图,我要获取京东上的图书的价格,和图书名,还有图书的id(id是唯一标识,可作为数据表的主键)
model
用来封装对象,我要抓取一本书的数据包括,书籍的id,书名及价格。ecliplse中生成set、get方法的快捷键是shift+alt+s然后选择生成setter、getter
main
主方法,尽量要求简单,这里我就这样写了。这里面有注释,很好理解。
util
util中包含两个文件,URLFecter 与HTTPUtils,其中URLFecter 调用了HTTPUtils类。
上面程序调用的HTTPUtils这个类,以下是HTTPUtils这个类。
parse
parse主要是通过Jsoup来解析html文件。并将解析后的数据,封装在List集合中,将数据通过层层返回到main方法中。
db
db中包含两个java文件,MyDataSource,MYSQLControl。这两个文件的作用已在前面说明了。
下面是MYSQLControl,主要使用QueryRunner方法操作数据库,使用时是batch方法。
再看main方法
在main方法中有这样一句程序,这便是调用了操作数据库MYSQLControl程序,将抓取的数据插入到数据库中了
MYSQLControl.executeInsert(bookdatas);
爬虫效果展示
到此,便完成了这个简单网络爬虫的编程工作,下面来看看程序运行的结果吧。
数据库中的结果如下:
(完)
PS:如果觉得我的分享不错,欢迎大家随手点赞、转发。
猜你喜欢
- 2024-09-09 Java 爬虫遇上数据异步加载,试试这两种办法
- 2024-09-09 实战Java爬虫课程-猿天地(java爬虫入门教程)
- 2024-09-09 如何编写一个Python网络爬虫?点进来,我教你!
- 2024-09-09 Java编写爬虫抓取今日头条内容(java抓取今日头条数据)
- 2024-09-09 一款分布式爬虫管理平台,支持多种语言和框架
- 2024-09-09 编写Java网络爬虫(java 写爬虫)
- 2024-09-09 三个Python爬虫版本,带你轻松入门爬虫!
- 2024-09-09 App 爬虫必备技能:三步完成 Android 逆向
- 2024-09-09 Python 3 学习笔记:爬虫基础入门(python爬虫:入门+进阶)
- 2024-09-09 来来来!带你了解Python爬虫的方方面面!
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)