java爬虫抓取网页数据(2016年上海事业单位医疗招聘:现学现卖解析 )

优采云 发布时间: 2022-04-07 04:15

  java爬虫抓取网页数据(2016年上海事业单位医疗招聘:现学现卖解析

)

  故事的开始

  

  虽然我们的程序员不做爬虫的工作,但是当我们工作中偶尔需要网络上的数据时,如果手动复制粘贴数据量少的话还是不错的。如果数据量很大,浪费时间真的很无聊。

  所以现在我在学习,研究了一个多小时写一个爬虫程序

  一、爬虫所需的工具包

  新建一个Maven项目,导入爬虫工具包Jsoup

  

org.jsoup

jsoup

1.10.2

  

  使用 Jsoup 解析网页

  首先我们需要获取我们请求的网页的地址

  使用Jsoup的parse()方法解析网页,传入两个参数,第一个参数是new URL(url),第二个参数设置解析时间超过30秒就放弃

  然后得到一个 Document 对象

  之后,就像我们操作 JS 代码一样,Document 对象可以实现 JS 的所有操作

  

  这时候我们用浏览器打开网页,F12检查元素,找到数据所在的div的id名称。如果没有 id 名称,则使用 cals 名称。这里没有 id 名称。

  

  然后我们通过类名获取元素。这时候我们可以输出 System.out.println(chinajobs); 看看我们是否得到了我们想要的数据。

  

  可以看出确实得到了我们想要的数据

  

  过滤数据

  虽然得到了数据,但是有很多冗余信息,所以下一步就是对数据进行过滤

  因为类不是唯一的,所以获取到 Elements 对象。在进行下一步之前,我们需要将其转换为 Element 对象。

  Element el = chinajobs.first();

  将chinajobs中的第一个元素转化为Element对象(首先确保我们需要的数据在chinajobs中的第一个元素中)

  通过分析发现可以从title属性中提取出我们需要的数据

  

  String title = el.getElementsByAttribute("title").text();

  尝试输出

  System.out.println(el.getElementsByAttribute("title").text());

  过滤到我们想要的所有数据

  

  四、导出到 Excel

  最后一步是导出到excel,这里我使用的是poi工具包

  

org.apache.poi

poi

3.17

  通过 el.getElementsByAttribute("title").size() 确定元素个数

  循环输出

  el.getElementsByAttribute("title").eq(i) 通过传入eq(i)的索引值确定元素值

  D盘新建上海招聘公司名单.xls文件

<p>public static void main(String[] args) throws IOException {

// 获取请求 https://www.buildhr.com/area/shanghai/

String url = "https://www.buildhr.com/area/shanghai/";

Document document = Jsoup.parse(new URL(url), 30000);

Elements chinajobs = document.getElementsByClass("chinajobs");

HSSFWorkbook wb = new HSSFWorkbook();

HSSFSheet sheet = wb.createSheet("公司名列表");

Element el = chinajobs.first();

for (int i = 0; i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线