java爬虫抓取网页数据(2016年上海事业单位医疗招聘:现学现卖解析 )
优采云 发布时间: 2021-11-24 03:07java爬虫抓取网页数据(2016年上海事业单位医疗招聘:现学现卖解析
)
故事的开始
虽然我们程序员不做爬虫工作,但我们在工作中偶尔会需要来自互联网的数据。如果手动复制粘贴,数据量很小。如果数据量很大,浪费时间真的很无聊。
所以现在研究了一个多小时,写了一个爬虫程序
一、爬虫需要的工具包
新建一个Maven项目,导入爬虫工具包Jsoup
org.jsoup
jsoup
1.10.2
使用 Jsoup 解析网页
首先我们需要获取我们请求的网页地址
使用Jsoup的parse()方法解析网页,并传入参数。第一个参数是新的URL(url),第二个参数设置为解析时间超过30秒则放弃。
然后得到一个 Document 对象
之后,就像我们操作JS代码一样,Document对象可以实现JS的所有操作
这时候我们用浏览器打开网页,F12查看元素,找到数据所在的div的id名,如果没有id名就用calss名,这里没有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盘新建一个上海招聘公司list.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