java爬虫小demo

java爬虫小demo

jsoup

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

为啥要写这篇文章呢,就是闲辖无聊没事干,简单琢磨了一下。
其实呢这个东西真的不难,只要你会一点jquery获取html元素就基本没啥问题。哈哈哈好了不说了直接上代码。

package com.jincou.pachong;

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import sing.test.SqlUitl; /*
									* 这个案例你只需要看结果,具体的jsoup介绍下一篇博客会详细介绍  */

public class Pachong {
	private static SqlUitl  sql = new SqlUitl();
	public static void main(String args[]) {
		// 这个就是博客中的java反射的url
		for (int j = 1; j < 10; j++) {
			String url = "https://www.zhipin.com/c101010100/?query=Java&page="+j+"&ka=page-"+j+"";
			try { // 先获得的是整个页面的html标签页面
				Document doc = Jsoup.connect(url).get();
				Elements job = doc.select("div.job-title");//获取页面的节点
				Elements xz = doc.select("span.red");//获取页面的节点
				/*Elements wz = doc.select(".info-primary p");*/
				Elements gs = doc.select("div.company-text h3.name");//获取页面的节点
				String[] job1 = job.text().split(" ");
				String[] xz1 = xz.text().split(" ");
				String[] gs1 = gs.text().split(" ");
				int a = 1;
				System.out.println(job1.length);
				System.out.println(xz1.length);
				System.out.println(gs1.length);
				if(job1.length>xz1.length){
					a = xz1.length;
				}else if(job1.length>gs1.length){
					a = gs1.length;
				}else if(xz1.length > gs1.length){
					a = gs1.length;
				}else {
					a = xz1.length;
				}
				for (int i = 0; i < a; i++) {//遍历出来存到数据库
					System.out.println("============================》》一个职位");
					System.out.println(job1[i]);
					System.out.println(gs1[i]);
					System.out.println(xz1[i]);
					sql.insert(job1[i], gs1[i], xz1[i]);
					System.out.println("《《=================================");
					System.out.println();
					
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

这里爬去的是boss招聘的java职位的信息,然后将爬取到的信息存到数据库。这个是启动类,还有一个dao。如下:

package sing.test;

import java.sql.*;


public class SqlUitl {

	private static Connection getConn() {
	    String driver = "com.mysql.jdbc.Driver";
	    String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull";
	    String username = "root";
	    String password = "root";
	    Connection conn = null;
	    try {
	        Class.forName(driver); //classLoader,加载对应驱动
	        conn = (Connection) DriverManager.getConnection(url, username, password);
	    } catch (ClassNotFoundException e) {
	        e.printStackTrace();
	    } catch (SQLException e) {
	        e.printStackTrace();
	    }
	    return conn;
	}
	
	public int insert(String a,String b,String c) {
	    Connection conn = getConn();
	    int i = 0;
	    String sql = "insert into boss1 (pname,cname,salary) values(?,?,?)";
	    PreparedStatement pstmt;
	    try {
	        pstmt = (PreparedStatement) conn.prepareStatement(sql);
	        pstmt.setString(1, a);
	        pstmt.setString(2, b);
	        pstmt.setString(3, c);
	        i = pstmt.executeUpdate();
	        pstmt.close();
	        conn.close();
	    } catch (SQLException e) {
	        e.printStackTrace();
	    }
	    return i;
	}
}

还有sql脚本如下:

CREATE TABLE `boss1` (
  `cid` bigint(20) NOT NULL AUTO_INCREMENT,
  `pname` varchar(255) DEFAULT NULL COMMENT '//职位',
  `cname` varchar(255) DEFAULT NULL COMMENT '公司名称',
  `salary` varchar(255) DEFAULT NULL COMMENT '薪资',
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=537 DEFAULT CHARSET=utf8mb4;

直接执行main方法效果如下
java爬虫小demo_第1张图片
java爬虫小demo_第2张图片

好了就分享到这里。。。。。。。。。第一次写博客 排版啥的都不会。。。。。。

你可能感兴趣的:(java爬虫)