爬虫说明文档.docx
《爬虫说明文档.docx》由会员分享,可在线阅读,更多相关《爬虫说明文档.docx(13页珍藏版)》请在冰点文库上搜索。
爬虫说明文档
Java网页爬虫步骤
覃璨
一、技术选型
1.HttpClient(或Jsoup)作为爬虫程序处理网络请求的框架。
2.Jsoup作为解析或网页的dom解析器。
3.数据库用MariaDB(MySQL的分支,也是作为替代MySQL的数据库,因为Qracle收购MySQL之后最新版会收费,MariaDB是MySQL带领开发的替代MySQL的开源数据库)
二、开发环境
1.下载安装jdk和jre并设置环境变量。
2.下载安装Eclipse(Eclipsemars)。
3.下载Jsoup的jar包。
4.下载安装MariaDB(安装时端口设置为默认的3306)。
三、前期准备
1.创建工程:
打开Eclipse,新建工程,工程名称随意,新建类,类名称为所抓取网页域名大写,如:
天府创业网
2.配置jar包:
将下载下来的jsoup的jar包放到工程目录下的lib文件夹里(如不存在此文件夹则新建),如图:
右键工程,选择BuildPath->ConfigureBuildPath
点击AddJARs…选择本工程lib文件夹下的jar包,点击ok即可。
3.右键工程,选择最后一项properties,将编码集设置为UTF-8
前期准备完毕。
四、爬虫实例
此处以成都师范学院招生就业处为例(
1.首先新建类,类名为ChengDuShiFan.java,
2.添加提示信息,注明你抓取的网页和作者的名称格式如下:
新建searchAndSaveInfo()方法和main()方法:
在searchAndSaveInfo()方法中书写逻辑代码
3.打开Chrome浏览器(不推荐使用IE),打开成都师范学院招生就业网,红框出为我们需要抓取的数据
点击键盘上的F12,打开元素审查界面,寻找刚好能够包括所需抓取列表的容器:
右键复制CSSPath
3.打开Eclipse,书写如下代码,并按照提示导入所需要的包并向上抛出异常(不要使用try...catch):
此代码代表用Jsoup.connect()方法获取到url为
我们看到刚刚审查元素的过程中所找到的列表容器下每一个li代表一条招聘信息
所以在此基础上继续select(“li”),返回类型为一个Elements元素集合,里面包含了所有的li。
4.到此,我们需要遍历此集合中所有的li,即每一条招聘信息,并抓取相应的信息,此处用到for循环:
注:
并非所有的网页都恰好能找到一个刚好包含所有需抓取信息的容器,所以需要根据实际情况决定变量i的起始值与结束条件。
我们需要抓取每一条招聘信息的标题、链接、日期和内容。
首先创建如下字段:
title->标题类型:
java.lang.String
link->链接类型:
java.lang.String
date->日期类型:
java.sql.Date
content->内容类型:
java.lang.String
school->学校名称(如果不是学校九天网站名称)类型:
java.lang.String
注意类型,不要导错包。
接下来遍历抓取信息
每个字段信息的获取方法与获取招聘列表方法相同,都是通过Chrome浏览器的审查元素功能找到对应的CSSPath。
具体操作方法请XXJsoup的使用方法说明。
五、将数据存入数据库
1.我已将数据库的连接操作进行了封装。
将附件中的项目导入Eclipse后使用以下代码,项目结构如下:
其中com.glaucus.dao包中定义了数据库操作方法的接口
com.glaucus.dao,impl包中实现了com.glaucus.dao中的方法
com.glaucus.util包中定义了一个获取Connection的单例工厂模式
com.glaucus.entity包中定义了Info的JavaBean,包含如下字段和这些字段的getter和setter方法,代表每抓取的一条信息:
dbconfig.properties中存放了数据库连接的配置信息
lib文件夹中存放的jsoup和jdbc的jar包,按照之前的方法BuildPath.
红框处填写你安装数据库时的用户名和密码:
打开mariadb数据库,新建database(databae名称需与红框内字段相对应)
使用如下建表语句创建table
CREATETABLE`info`(
`id`BIGINT(20)UNSIGNEDNOTNULLAUTO_INCREMENT,
`title`VARCHAR(500)NOTNULL,
`date`DATENULLDEFAULTNULL,
`content`LONGTEXTNULL,
`link`VARCHAR(500)NULLDEFAULTNULL,
`school`VARCHAR(50)NULLDEFAULTNULL,
`type`INT(11)NOTNULLDEFAULT'1',
PRIMARYKEY(`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
2.将爬虫编写的com.glaucus.spider中:
按照以上方法写出爬虫后就要将数据存入数据库中,首先获取connection实例:
实例化一个Info类表示每一条信息,并用setXXX方法将抓取到的内容复制给对应的字段,然后调用infoDao的saveInfo()方法将数据保存,第一个参数为数据库连接实例,第二个参数为info实例。
存入数据库前还需指定该信息的类型为下列哪一类:
比如此条属于网络招聘,则需在调用infoDao.saveInfo()前加上:
最后存入数据库效果如图:
注:
1.如果有多页则需要在外层再嵌套循环。
2.如果日期无法抓取或超过当前日期,先点进链接查看正确日期是否在content中,如没有则将日期设置为当前日期。
3.如果出现连接超时错误请用Jsoup.connect(url).timeout(arg0).get()设置超市,arg0为long类型的毫秒数。
4.若出现乱码或其他情况,请使用HttpClient代替Jsoup.connect()方法,具体步骤请自行XX。
5.请严格遵循示例中的命名和编码格式。
6.不懂或不会的地方请善用搜索引擎。
抓取完毕后使用System.out.println()方法输出抓取到的字段,并在main方法中调用searchAndSaveInfo()方法,如能正确输出,则爬虫编写成功:
请每个班做完后由负责人统一将com.XXX.spider包下的java文件打包发到我的QQ!