博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsoup爬虫项目基础用法,如何用jsoup从网上爬东西
阅读量:4136 次
发布时间:2019-05-25

本文共 3687 字,大约阅读时间需要 12 分钟。

package com.starry.service;import java.io.IOException;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.apache.commons.dbutils.QueryRunner;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import com.starry.util.MyJDBCUtils;import com.starry.utity.Job;/** * 这是一个方法类 * jsoup的使用方法 * 以下代码实验于智联招聘		 * @author Starry * */public class DateSearch {	//主程序入口	public static void main(String[] args) throws SQLException {		String url = "http://sou.zhaopin.com/jobs/searchresult.ashx?jl=郑州&kw=保洁&p=1&isadv=0";		acquireDate(url);	}	/**	 * 这是一个方法,需要传入一个字符串	 * @param url	 * @throws SQLException	 */	public static void acquireDate(String url) throws SQLException{				QueryRunner qr=new QueryRunner(MyJDBCUtils.getDataSource());		Job job = new Job();		try {			//根据一个url创建一个Document对象			//此时相当于鼠标点进去这个网页			Document doc = Jsoup.connect(url).get();			//获取网页里面class为zumc的那段代码			Elements element = doc.getElementsByClass("zwmc");			//获取网页上面那段代码中的的包含href属性的a标签,得到一个集合			Elements element2 = element.select("a[href]");			//遍历集合			for (Element ele : element2) {				//获取 上面那段代码中的  href="www.XXXXXXXXXXX.com" 获取的是引号中的网址				String href = ele.attr("href");				//然后根据获得的网址在创建一个对象    ,相当于又点进去了一个网页				Document docc = Jsoup.connect(href).get();				//下面的是我新建的一个job类,我把我从网页上弄出来的东西封装到这个类里面,然后在输出到mysql				//我使用的方法很简单,例如下面:div.inner-left>h1  意思就是说有个标签叫div,这个div				//的class是inner-left,">"这个符号的意思是这个标签里面有个h1的标签,".text"这个意思是把这个h1标签里面的文字转换出来变成String字符串				job.setJobName(docc.select("div.inner-left>h1").text());// 工作名称				job.setCompanyName(docc.select("div.inner-left>h2").text());// 公司名称				//这个就是有个class是terminal-ul的ul标签,他里面有个li,li里面有个strong标签				//然后把Strong里面的文字给我变成一个String字符串  "first"意思是  第一个strong标签里面的内容				job.setPay(docc.select("ul.terminal-ul>li>strong").first().text());// 工资范围				job.setJobDesc(docc.select("div.tab-inner-cont>p").first().text());// 职位描述				job.setCompanyDesc(docc.select("div.tab-inner-cont[style]>p").text());// 公司描述				//这是一个获取日期的方法				String str = docc.select("ul.terminal-ul>li").get(2).select("strong").text();				job.setPublicDate(dateMethod(str));// 发布日期				job.setCreateDate(dateMethod2(0));// 创建时间								//这个标签就有点意思了,select了两次				//第一次先查找第5个li,然后获取第5个li里卖弄的strong标签中的内容				//"get"的意思是我要获取第5个li里面的内容  {从0开始,第一个是0}				job.setPersonNumber(docc.select("ul.terminal-ul>li").get(6).select("strong").text());				job.setJobAdress(docc.select("ul.terminal-ul>li").get(1).select("strong").text());				job.setSourceURL(href);								//mysql插入数据的语句				String sql="insert into worktable value(?,?,?,?,?,?,?,?,?,?,?)";				Object[] params={null,job.getJobName(),job.getCompanyName(),						job.getPay(),job.getJobDesc(),job.getCompanyDesc(),job.getJobAdress(),job.getPersonNumber(),						job.getPublicDate(),job.getCreateDate(),job.getSourceURL()};				qr.update(sql, params);			}		} catch (IOException e) {			e.printStackTrace();		}		/*		 * 创建时间 和当前时间		 */	}	/**	 * 信息发布日期	 * @param a	 * @return	 */	public static String dateMethod(String str){				String regEx="\\d{4}-\\d{2}-\\d{2}";   		Pattern p = Pattern.compile(regEx);   		Matcher m = p.matcher(str);		String aa = null;		if(m.matches()){			aa=str;		}else{			if(str.equals("前天")){				aa=dateMethod2(2);			}else if(str.equals("昨天")){				aa=dateMethod2(1);			}else if(str.equals("15天前")){				aa="15天前";			}else{				aa=dateMethod2(0);			}		}		return aa;	}	public static String dateMethod2(int a) {		Calendar cal = Calendar.getInstance();		cal.add(Calendar.DATE, -a);		String yesterday = new SimpleDateFormat("yyyy-MM-dd ").format(cal.getTime());		return yesterday;	}}

转载地址:http://gsxvi.baihongyu.com/

你可能感兴趣的文章
HDU 4310 Hero(贪心)
查看>>
HDU 4864 Task(贪心)
查看>>
HDU 1686 Oulipo(KMP)
查看>>
HDU 1232 畅通工程(并查集)
查看>>
HDU 2594 Simpsons’ Hidden Talents(kmp)
查看>>
HDU 2066 一个人的旅行(spfa)
查看>>
HDU 2545 树上战争(并查集)
查看>>
HDU 4506 小明系列故事——师兄帮帮忙(快速幂)
查看>>
HDU 5645 DZY Loves Balls(概率)
查看>>
HDU 5640 King's Cake(贪心)
查看>>
HDU 5615 Jam's math problem(十字相乘判定)
查看>>
HDU 5650 so easy(异或)
查看>>
HDU 5630 Rikka with Chess(翻棋子)
查看>>
HDU 5631 Rikka with Graph(无向图去边搜索)
查看>>
HDU 1547 Bubble Shooter(BFS蔓延模拟)
查看>>
HDU 1548 A strange lift(递归模拟标记)
查看>>
(转)HDU 1584 蜘蛛牌(搜索)
查看>>
HDU 1583 DNA Assembly(暴力模拟)
查看>>
HDU 1579 Function Run Fun(记忆化搜索)
查看>>
HDU 1574 RP问题(01背包变形)
查看>>