Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)
这几天在学习Java解析xml,突然想到Dom能不能解析html,结果试了半天行不通,然后就去查了一些资料,发现很多人都在用Jsoup解析html文件,然后研究了一下,写了一个简单的实例,感觉还有很多地方需要润色,在这里分享一下我的实例,欢迎交流指教!
后续想通过Java把数据导入到Excel或者生成一个报表!
package gethtml; import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; /**从智联招聘获取招聘信息
* @author syskey
* @url 智联招聘网站链接(建议不要更改)
* @city 搜索工作的城市
* @keywrods 搜索工作的相关关键字
*/ public class JsoupHtml { private String url="http://sou.zhaopin.com/jobs/searchresult.ashx?jl="; //智联招聘网站
private String city="西安"; //搜索工作的城市
private String keywords="java"; //搜索工作的关键字
public JsoupHtml(String city,String keywords){
this.city=city;
this.keywords =keywords; } public void getZhiLianWork(){
try {
for (int i=0;i<10;i++) {
System.out.println("*********开始遍历第"+(i+1)+"页的求职信息*********");
Document doc = Jsoup.connect(url+city+"&kw="+keywords+"&p="+(i+1)+"&isadv=0").get();
Element content = doc.getElementById("newlist_list_content_table");
Elements zwmcEls = content.getElementsByClass("zwmc");
Elements gsmcEls = content.getElementsByClass("gsmc");
Elements zwyxEls = content.getElementsByClass("zwyx");
Elements gzddEls = content.getElementsByClass("gzdd");
Elements gxsjEls = content.getElementsByClass("gxsj");
for(int j = 0;j<zwmcEls .size();j++){ System.out.println(
zwmcEls.get(j).tagName("a").text()+"*****"+gsmcEls.get(j).tagName("a").text()+
"*****"+zwyxEls.get(j).tagName("a").text()+"*****"+gzddEls.get(j).tagName("a").text()+
"*****"+gxsjEls.get(j).tagName("a").text());
System.out.println();
}
System.out.println("*********结束遍历第"+(i+1)+"页的求职信息*********"); } } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) { JsoupHtml jHtml = new JsoupHtml("上海", "java");
jHtml.getZhiLianWork(); } }
更新源代码,支持生成html表格:
package jsouphtml; import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; public class JsoupHtml { public static void main(String[] args) {
try {
String url ="http://sou.zhaopin.com/jobs/searchresult.ashx?";
String city ="西安";
String keywords = "java";
BufferedWriter bWriter = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("output.html"),"utf-8"));
bWriter.write(""); File input = new File("input.html");
Document doc2 = Jsoup.parse(input, "UTF-8", "");
Element table = doc2.getElementById("workinfo");
table.text("");
Element theader = table.appendElement("tr");
theader.appendElement("th").text("序号");
theader.appendElement("th").text("职位名称");
theader.appendElement("th").text("公司名称");
theader.appendElement("th").text("职位月薪");
theader.appendElement("th").text("工作地点");
theader.appendElement("th").text("发布日期"); for(int page=0;page<10;page++){
Document doc = Jsoup.connect(url+city+"&kw="+keywords+"&p="+page).get();
Element content = doc.getElementById("newlist_list_content_table");
Elements zwmcEls = content.getElementsByClass("zwmc");
Elements gsmcEls = content.getElementsByClass("gsmc");
Elements zwyxEls = content.getElementsByClass("zwyx");
Elements gzddEls = content.getElementsByClass("gzdd");
Elements gxsjEls = content.getElementsByClass("gxsj"); for(int i = 1;i<zwmcEls .size();i++){
Element tr =table.appendElement("tr");
tr.appendElement("td").text((page+1)+"-"+i);
tr.appendElement("td").text(zwmcEls.get(i).tagName("a").text());
tr.appendElement("td").text(gsmcEls.get(i).tagName("a").text());
tr.appendElement("td").text(zwyxEls.get(i).tagName("a").text());
tr.appendElement("td").text(gzddEls.get(i).tagName("a").text());
tr.appendElement("td").text(gxsjEls.get(i).tagName("a").text());
}
}
System.out.println(doc2.html());
bWriter.write(doc2.html());
bWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
output.html模板:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>智联工作信息</title>
<style>
body{margin:0;padding:0;}
.header{height:100px;width:100%;background:#39c;color:#fff;text-align:center;line-height:100px;font-size:40px;
font-family:"微软雅黑";}
.body{width:100%;background:#fff;}
.body table{width:90%;margin:0 auto;color:#2e2e2e;border:1px solid #cad9ea; border-collapse: collapse; }
.body table th,td{min-width:50px;max-width:300px;}
.feeter{height:30px;width:100%;background:#39c;color:#fff;text-align:center;line-height:30px;font-size:14px;
font-family:"微软雅黑";}
</style>
</head>
<body>
<div class="header">智联工作信息</div>
<div class="body">
<table class="work" border="1">
<tbody id="workinfo">
</tbody>
</table>
</div>
<div class="feeter">版权所有 翻版必究@2017 sysker</div>
</body>
</html>
Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)的更多相关文章
- python3爬虫抓取智联招聘职位信息代码
上代码,有问题欢迎留言指出. # -*- coding: utf-8 -*- """ Created on Tue Aug 7 20:41:09 2018 @author ...
- node.js 89行爬虫爬取智联招聘信息
写在前面的话, .......写个P,直接上效果图.附上源码地址 github/lonhon ok,正文开始,先列出用到的和require的东西: node.js,这个是必须的 request,然发 ...
- [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图
第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...
- 【Java/JDBC】利用ResultSetMetaData从数据库的某表中获取字段信息并存到csv文件
代码下载:https://files.cnblogs.com/files/xiandedanteng/FindNotnullColumns20191102-2.rar 这篇还不够完善,请看更完善的续篇 ...
- Java-Runoob-高级教程-实例-方法:13. Java 实例 – for 和 foreach循环使用
ylbtech-Java-Runoob-高级教程-实例-方法:13. Java 实例 – for 和 foreach循环使用 1.返回顶部 1. Java 实例 - for 和 foreach循环使用 ...
- python爬虫实战之爬取智联职位信息和博客文章信息
1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author ...
- Android网络爬虫程序(基于Jsoup)
摘要:基于 Jsoup 实现一个 Android 的网络爬虫程序,抓取网页的内容并显示出来.写这个程序的主要目的是抓取海投网的宣讲会信息(公司.时间.地点)并在移动端显示,这样就可以随时随地的浏览在学 ...
- Java 实现 HttpClients+jsoup,Jsoup,htmlunit,Headless Chrome 爬虫抓取数据
最近整理一下手头上搞过的一些爬虫,有HttpClients+jsoup,Jsoup,htmlunit,HeadlessChrome 一,HttpClients+jsoup,这是第一代比较low,很快就 ...
- 【java爬虫】---爬虫+基于接口的网络爬虫
爬虫+基于接口的网络爬虫 上一篇讲了[java爬虫]---爬虫+jsoup轻松爬博客,该方式有个很大的局限性,就是你通过jsoup爬虫只适合爬静态网页,所以只能爬当前页面的所有新闻.如果需要爬一个网站 ...
随机推荐
- PHP限制IP访问 只允许指定IP访问 允许*号通配符过滤IP
/** * 检测访问的ip是否为规定的允许的ip * Enter description here ... */ function check_ip(){ $ALLOWED_IP=array('192 ...
- JavaUtil_00_资源帖
一.精选工具包 1.Hutool Hutool wiki 二.资源 1.
- stl_multimap.h
stl_multimap.h // Filename: stl_multimap.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: ...
- Java 时间和日期类型的 Hibernate 映射
以下情况下必须显式指定 Hibernate 映射类型 一个 Java 类型可能对应多个 Hibernate 映射类型. 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hi ...
- [原]NYOJ-无线网络覆盖-199
大学生程序代写 /*无线网络覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学. 现 ...
- uoj279温暖会指引我们前行
暖气来啦~ 动态树维护最大生成树裸题 #include<iostream> #include<cstdio> #include<cstdlib> #include& ...
- xcopy语法
xcopy语法 2007-02-09 13:29:45| 分类: 服务器 | 标签:xcopy语法 |字号 订阅复制文件和目录,包括子目录. 语法 xcopySource [Destination] ...
- Maven 排除依赖jar包
当我们引入第三方jar包的时候,难免会引入传递性依赖,有些时候这是好事,然而有些时候我们不需要其中的一些传递性依赖 比如我们不想引入传递性依赖commons-logging,我们可以使用exclusi ...
- 多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建
多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建 一.服务器详情 192.168.122.111 pm01.jq.com pm01 #(pup ...
- unittest 执行测试脚本输出测试报告
import unittestimport HTMLTestRunnertest as HTMLTestRunner#获取路径path = './'#创建测试套件,读取测试脚本suite = unit ...