栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

手把手Java爬虫教学 - 3. 分析页面 & 数据库建表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

手把手Java爬虫教学 - 3. 分析页面 & 数据库建表

我们上一讲已经将项目的大体搭建起来了,接下来我们来分析一下我们将要爬取的第一个网站:博客园 - 开发者的网上家园

一、分析页面

(!!!样子变了很多,最起码我当时写测试代码的时候样子不是这个样子,而且我写测试代码到我写博客就间隔了几天而已,哈呀一)

我们爬虫主要爬的是中间的着一块区域,要爬取的内容有:博客标题、简介、博客创建时间、用户头像、用户名称这些内容。

每次打开页面可以展示 20 条博客记录,最多可以展示 200 页,这也就是说,我们最多可以爬 4000 条数据,后面根据增量往我们数据库更新即可。

然后就是怎么爬这些数据,还有翻页的问题了。

怎么爬数据我们后面写代码的时候会将,所以我们只需要考虑翻页的问题;我通过点击页面的翻页,然后观察他的 network 接口发现,每次翻页的时候都会有一个 Restful 的请求。

好比 /xxx/1 就是第一页,/xxx/2 就是第二页,所以我直接放弃通过 htmlunit 去模拟点击按钮进行翻页,而是直接通过这个 restful 接口进行实现翻页的效果。

(这个接口现在隐匿了,找不到了,但是好在我有,我不会将这个接口直接公布出来,有需要的朋友可以去拉取我的项目,可以在 yml 配置文件中找到)

二、数据库建表

这里我们创建两个表,一个是博客表,还有一个是用户表。然后博客表中有一个用户表的主键作为关联键,详细设计如下~

CREATE TABLE `t_lemon1234_scraper_author` (
  `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id',
  `authorCode` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者编号',
  `authorName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者名称',
  `authorUrl` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者主页连接',
  `imageUrl` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像',
  `lastOperateDt` datetime DEFAULT NULL COMMENT '最后操作日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `t_lemon1234_scraper_blog` (
  `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键id',
  `blogCode` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '博客编号',
  `blogTitle` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '博客名称',
  `blogUrl` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '博客连接',
  `blogCreateDt` datetime DEFAULT NULL COMMENT '博客创建日期',
  `content` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '博客简介',
  `authorId` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者id',
  `lastOperateDt` datetime DEFAULT NULL COMMENT '最后操作日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

比较简单,相信大家能看懂的哈。

三、Java Entity

下面代码只有实体,自己去弄一下 get set 方法,如果你用了 Lombok,自己去加一下注解什么的~

public class Author implements Serializable {
	
	private static final long serialVersionUID = 1L;

	private String id;
	
	private String authorCode;
	
	private String authorName;
	
	private String authorUrl;
	
	private String imageUrl;
	
	private Date lastOperateDt;
}
public class Blog implements Serializable {
	
	private static final long serialVersionUID = 1L;

	private String id;
	
	private String blogCode;
	
	private String blogTitle;
	
	private String blogUrl;
	
	private Date blogCreateDt;
	
	private String content;
	
	private String authorId;
	
	private Date lastOperateDt;
}


这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号