赞
踩
爬虫,全称是网络爬虫,又称为网⻚蜘蛛,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。
搜索引擎:通过爬虫建立各网站内容的索引(比如:百度)
数据采集分析:通过爬虫获取大量数据并加以分析。(分析竞品公司)其他等等。
我们今天要做的Java爬虫获取招聘网站信息就是数据采集分析的过程,其本质就是不断向招聘网站发起HTTP请求,在响应中筛选出自己感兴趣的内容并加以分析。HTTP请求和响应大家来说应该已经很熟悉了,不管是使用JDK自带的HttpURLConnection或者是第三方开源框架如Apache的HttpClient都很容易发起HTTP请求并接收响应。
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>1.5.2.RELEASE</version>
</parent>
SpringBoot的项目必须先将parent设置为SpringBoot的parent,该parent包含了大量默认的配置,大大简化我们的开发。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.3</version>
</dependency>
@SpringBootApplication
@MapperScan("org.example.dao")
public class SpiderApplication
{
public static void main( String[] args )
{
System.out.println( "爬虫项目启动" );
SpringApplication.run(SpiderApplication.class,args);
}
}
import org.example.pojo.Sxs; import org.springframework.stereotype.Service; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.processor.PageProcessor; import us.codecraft.webmagic.selector.Selectable; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * 实习僧 */ @Service("sxsProcessor") public class SXSProcessor implements PageProcessor { //校招Java类 static String URL="https://resume.shixiseng.com/interns?type=school&keyword=Java&page=1"; public String getURL(){ return URL; } 抓取⽹站的相关配置,包括编码、抓取间隔、重试次数、代理、UserAgent等 private Site site=Site.me().setCharset("utf-8") .setSleepTime(new Random() .nextInt(20)*1000).setRetryTimes(3); @Override public void process(Page page) { String urlNum=URL.substring(URL.indexOf("page=")+5,URL.length()); System.out.println("当前页数为: "+urlNum); List<Selectable> nodes = page.getHtml().xpath("//div[@class='intern-wrap intern-item']").nodes();; for (Selectable node:nodes ) { //通过Xpath解析信息 //分析实习僧⽹⻚,能够获取的关键信息包括公司名称,⽹申⼊⼝URL、⼯作城市列表、岗位城市列表、 发布时间等 //公司名称 String company = node.xpath("//div[@class='f-r intern-detail__company']/p/a/text()").get(); //公司薪水 String salary=node.xpath("//div[@class='f-l intern-detail__job']/p/span/text()").get(); //工作名称 String job=node.xpath("//div[@class='f-l intern-detail__job']/p/a/text()").get(); //公司简介 String produce=node.xpath("//div[@class='f-r intern-detail__company']/p/span/text()").get(); //公司位置 String city=node.xpath("//span[@class='city ellipsis']/text()").get(); //网申URL String url=node.xpath("//div[@class='f-l intern-detail__job']/p/a/@href").get(); System.out.println("公司名称:"+company+", 招聘岗位:"+job+", 公司薪资:"+salary+", 公司简介:"+produce+" ,公司城市:"+city+", 网申URL:"+url); System.out.println("########################################"); } //页数加一 Integer pageIndex=Integer.valueOf(urlNum)+1; //停止爬虫的条件 if(pageIndex>10) return; //替换掉url中的页数 URL = URL.replace(URL.substring(URL.indexOf("page="),URL.length()),"page="+String.valueOf(pageIndex)); //跳转下一页 page.addTargetRequest(URL); } @Override public Site getSite() { return site; } }
@Controller
public class SpiderController {
@Autowired
SXSProcessor sxsProcessor;
@RequestMapping("/spider")
@ResponseBody
public String spider(){
System.out.println("开始爬取Java校招页面");
Spider.create(sxsProcessor).addUrl(sxsProcessor.getURL()).run();
return "success";
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。