热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Java】基于jsoup爬虫实现(从智联获取工作信息)

这几天在学习Java解析xml,突然想到Dom能不能解析html,结果试了半天行不通,然后就去查了一些资料,发现很多人都在用

这几天在学习Java解析xml,突然想到Dom能不能解析html,结果试了半天行不通,然后就去查了一些资料,发现很多人都在用Jsoup解析html文件,然后研究了一下,写了一个简单的实例,感觉还有很多地方需要润色,在这里分享一下我的实例,欢迎交流指教!后续想通过Java把数据导入到Excel或者生成一个报表!

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;/**从智联招聘获取招聘信息* &#64;url 智联招聘网站链接&#xff08;建议不要更改&#xff09;* &#64;city 搜索工作的城市* &#64;keywrods 搜索工作的相关关键字*/public class JsoupHtml {private String url&#61;"http://sou.zhaopin.com/jobs/searchresult.ashx?jl&#61;"; //智联招聘网站private String city&#61;"西安"; //搜索工作的城市private String keywords&#61;"java"; //搜索工作的关键字public JsoupHtml(String city,String keywords){ this.city&#61;city;this.keywords &#61;keywords;}public void getZhiLianWork(){try {for (int i&#61;0;i<10;i&#43;&#43;) {System.out.println("*********开始遍历第"&#43;(i&#43;1)&#43;"页的求职信息*********");Document doc &#61; Jsoup.connect(url&#43;city&#43;"&kw&#61;"&#43;keywords&#43;"&p&#61;"&#43;(i&#43;1)&#43;"&isadv&#61;0").get(); Element content &#61; doc.getElementById("newlist_list_content_table"); Elements zwmcEls &#61; content.getElementsByClass("zwmc");Elements gsmcEls &#61; content.getElementsByClass("gsmc"); Elements zwyxEls &#61; content.getElementsByClass("zwyx"); Elements gzddEls &#61; content.getElementsByClass("gzdd"); Elements gxsjEls &#61; content.getElementsByClass("gxsj");for(int j &#61; 0;j

更新源代码&#xff0c;支持生成html表格&#xff1a;

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 &#61;"http://sou.zhaopin.com/jobs/searchresult.ashx?";String city &#61;"西安";String keywords &#61; "java";BufferedWriter bWriter &#61; new BufferedWriter(new OutputStreamWriter(new FileOutputStream("output.html"),"utf-8"));bWriter.write("");File input &#61; new File("input.html");Document doc2 &#61; Jsoup.parse(input, "UTF-8", "");Element table &#61; doc2.getElementById("workinfo");table.text("");Element theader &#61; 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&#61;0;page<10;page&#43;&#43;){ Document doc &#61; Jsoup.connect(url&#43;city&#43;"&kw&#61;"&#43;keywords&#43;"&p&#61;"&#43;page).get(); Element content &#61; doc.getElementById("newlist_list_content_table"); Elements zwmcEls &#61; content.getElementsByClass("zwmc");Elements gsmcEls &#61; content.getElementsByClass("gsmc"); Elements zwyxEls &#61; content.getElementsByClass("zwyx"); Elements gzddEls &#61; content.getElementsByClass("gzdd"); Elements gxsjEls &#61; content.getElementsByClass("gxsj");for(int i &#61; 1;i

output.html模板&#xff1a;


智联工作信息
版权所有 翻版必究&#64;2018 Joker

 


推荐阅读
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 微信小程序开发指南:创建动态电影选座界面
    本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
author-avatar
mobiledu2502886187
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有