【详解01】猫眼电影_简单Java爬虫

【需求】

1.爬取猫眼电影http://m.maoyan.com/网页,要求使用JAVA
2.将影片ID、影片名称,插入数据库


【新建数据库】

需要注意的点:

【详解01】猫眼电影_简单Java爬虫_第1张图片

1. 如图,尽量不要动information_schema和mysql两个系统库。防止出现不必要的问题。

2. 我们这里可以使用test库。但本例为了杜绝中文乱码的诸多问题,我们自己新建了一个新库ttt。新建的过程中格外注意,把编码格式都设置为utf8。


【中文乱码的问题解决】

问题:我们获取到了需要的信息。但是中文插入数据库发生乱码,都是???或者乱七八糟的字符。

解决方式:

1. 新建一个编码格式为utf8 的新数据库ttt。

2. 将数据库连接的链接改为:String url = "jdbc:mysql://localhost:3306/ttt?characterEncoding=utf8";

    即,需要在链接最后加编码格式的限制。

3. String data = new String(getData, "utf-8");

即,保证所有的地方编码格式都设置为utf-8


【JAVA爬虫思路分析】

写JAVA爬虫之前,我们回顾一下之前我们用Python写爬虫的经验。

整个爬虫的逻辑是什么样子的?虽然使用的语言发生变化,但其中的逻辑是相通的,不会有太大变化。

即:

1. 通过网址访问网页,拿到   HTML页面数据或Json数据   等形式的反馈。

2. 对反馈回来的数据进行分析,从中筛选出自己想要的数据。

3. 最后对数据进行处理。如插入数据库等。

这就是一个完整的爬虫。


【写爬虫之前的准备】

 一台新的电脑。开发之前要做的准备有:

1. 配置开发环境

2. 安装必要的软件

如下图:

【详解01】猫眼电影_简单Java爬虫_第2张图片

如图,从上之下依次为:

两个JDK、 myEclipse10、mysql、Navicat、Eclipse的svn插件、TortoiseSVN。

依次安装,打开安装文件直接跟着向导走就可以,不需要任何的破解步骤。

唯一需要注意的是它们各自的配置。依次为:

JDK环境变量的配置、myEclipse的JDK设置。

其中myEclipse的JDK设置如下图:

【详解01】猫眼电影_简单Java爬虫_第3张图片


【开始写爬虫】

首先需要零碎的说一些概念性的基础知识:

1. 【导入包相关 】

不需要手动去写import ,手动来引入需要的类。Eclipse可以自动提示,自动导入。或者通过快捷键CTRL + SHIFT + O。

2. 【jar包是什么】

jar包中封装了很多我们编程需要的类,我们编程时,如果需要某个类,某个方法,是要去jar包中拿的。

这就是为什么说,我需要什么jar包才弄什么jar包。

3. 【jar包的使用】

【详解01】猫眼电影_简单Java爬虫_第4张图片

我们新建一个Java工程的时候是没有lib文件夹的,我们需要什么jar包,就把需要的jar包拷贝到这个lib文件夹中待用。

然后如下图进行操作:

【详解01】猫眼电影_简单Java爬虫_第5张图片

这样就能把jar包放入Referenced Libraries中,也就能在代码中正常使用了。


最终成品的工程目录结构如下图:

【详解01】猫眼电影_简单Java爬虫_第6张图片

是最普通的Java工程。核心代码在Test.java文件中。

这里先贴出核心代码:

package com.parity.model;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.client.HttpClient;

public class Test {
	public static void main(String[] args) throws IOException, SQLException {
	URL url = new URL("http://m.maoyan.com/movie/list.json?type=hot&offset=0&limit=1000");  
	HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
	InputStream inputStream = conn.getInputStream();   //通过输入流获得网站数据  
        byte[] getData = readInputStream(inputStream);     //获得网站的二进制数据  
        String data = new String(getData, "utf-8");        //拿到网页内容  
        //System.out.println(data); 
        
        JSONObject jsonObject = JSONObject.fromObject(data);
        String name = jsonObject.getString("data");
        System.out.println("data is:  "+name);
        
        JSONObject jsonObject1 = JSONObject.fromObject(name);
        JSONArray movies = jsonObject1.getJSONArray("movies");
        for(int i=0;i

代码的整体逻辑就是上文阐述的   爬虫思路分析   所说的。




































你可能感兴趣的:(JAVA,CRAWLER)