【JAVA爬虫】爬取猫眼电影TOP100并将数据存入数据库

前几天的简单写了个利用JSOUP进行JAVA爬虫,里面有谈到后续版本会更新数据库操作,所以这次来更新了。

版本更新

此次的版本里数据爬取部分新增了[电影主演-star]和[电影评分-score]部分,并对之前的数据提取进行了筛选和优化。
功能部分新增【翻页爬取】(共10页)、【连接数据库】、【向数据库输入数据】以及【打印数据】部分。

老规矩,先上目录

目录

  • 爬虫代码框架
    • 逻辑顺序
    • 使用的jar包
  • 爬虫实例
    • model
    • main
    • util
    • parse
    • db
  • 数据库操作
    • 使用流程
    • 代码实例
  • 数据展示
    • 编译器打印效果
    • MySql展示效果

爬虫思想框架

逻辑顺序

在这里插入图片描述
这个逻辑顺序是我参考一个技术大佬的,如果感兴趣可以点击:基于java的网络爬虫框架

首先,main方法,将url传给util获取响应的html文件,然后util将其获得的html文件,传给parse进行解析,获取最终数据,封装在集合中。解析完毕后,数据返回到main,接着main操作db将数据导入到mysql中。

model
用来封装对象,比如我要获取猫眼电影榜单的ID、电影名、电影主演、电影评分、上映时间,则需要在model写入对应的属性。说的直白一些,封装的就是我要操作数据对应的属性名。
(比如对象是猫,则model用来添加猫的属性,比如名字、性别、年龄等)

main
程序起点,也是重点,建立客户端、获取数据、连接数据库、执行数据库语句、存放数据。

util
包括【HTTPUtils】和【URLHandle】
HTTPUtils:响应客户端
URLHandle:将main方法,传过来的url,通过httpclient相关方法,获取需要解析的html文件或者json文件等。

parse
这里面存放的是针对util获取的文件采用Jsoup进行解析,并利用正则表达式将获取的文本数据进行筛选。

db
主要放的是数据库操作文件,里面【MySqlControl】用来连接数据库,对数据库进行增删改查操作等。

使用的jar包

在这里插入图片描述
这些包网上一搜就能下载到。
不过在这里给大家推荐一个网站Download JAR files ,里面的jar包非常全,以后有需要的jar包直接搜索下载就行。

爬虫实例

接下来的实例部分就不特别进行讲解了,看代码注释即可。

model

myMovie

package model;

public class myMovie {
   
    private int movieRank;//电影排名
    private String movieName;//电影名
    private String releaseTime;//上映时间
    private String star;//电影主演
    private String score;//电影评分

    public String getStar() {
   
        return star;
    }

    public void setStar(String star) {
   
        this.star = star;
    }

    public String getScore() {
   
        return score;
    }

    public void setScore(String score) {
   
        this.score = score;
    }

    public int getMovieRank() {
   
        return movieRank;
    }

    public void setMovieRank(int movieRank) {
   
        this.movieRank = movieRank;
    }

    public String getMovieName() {
   
        return movieName;
    }

    public void setMovieName(String movieName) {
   
        this.movieName = movieName;
    }

    public String getReleaseTime() {
   
        return releaseTime;
    }

    public void setReleaseTime(String releaseTime) {
   
        this.releaseTime = releaseTime;
    }

    @Override
    public String toString() {
   
        return "myMovie{" +
                "movieRank='" + movieRank + '\'' +
                ", movieName='" + movieName + '\'' +
                ", releaseTime='" + releaseTime + '\'' +
                '}';
    }
}

main

myMovieMain

package Main;

import db.MySqlControl;
import model.myMovie;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import util.URLHandle;

import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import static db.MySqlControl.getConn;


public class myMovieMain {
   

    /**
     * 解析页面,并把数据插入至数据库
     */
    public static List<myMovie> getOnePage(String url,List<myMovie> movieList,HttpClient client,Connection c) {
   
        try {
   
            movieList = URLHandle.urlParser(client, url);
            //如果数组不为空,将数据插入至数据库
            if (movieList != null) {
   
                Object[][] params = new Object[movieList.size()][5];
                MySqlControl.insertDate(params, movieList, c);
            }else {
   
                try {
   
                    System.out.println("准备关闭数据库...");
                    c.close();
                    System.out.println("成功关闭数据库.");
                } catch (SQLException e) {
   
  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值