今天接到一个任务,要抓取职位列表以及职位的数量,老板做PPT要用到这些数据。
研究君觉得这个还蛮有意思的,马上就贡献给各位了。
平时做爬虫,大家都说用Pyhon简单,其实啊,使用java也很简单。废话少说,上代码:
首先创建maven工程,增加下面的依赖:
<dependencies> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency> </dependencies>
然后增加类:CrawerJobTitle
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import java.io.IOException; public class CrawerJobTitle { public static void main(String[] args) throws IOException { //因为智联上的职位列表比较清晰,且容易抓取,就从智联获取了
Document doc = Jsoup.connect("https://www.zhaopin.com/").get(); Elements newsHeadlines = doc.select("a.zp-jobNavigater__pop--href");
for (int i = 0; i < newsHeadlines.size(); i++) { //抓取51job上的职位数量 String url2 = "https://search.51job.com/list/000000,000000,0000,00,9,99," + newsHeadlines.get(i).text()+ //职位名称 ",2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare= "; Document doc2 = Jsoup.connect(url2).get(); String titleJobBNum = doc2.select("#resultList>div.dw_tlc>div.rt").first().text(); System.out.println(newsHeadlines.get(i).text()+" "+titleJobBNum); } } }
说明两点:
1、这里用到了Jsoup这个工具,Jsoup可厉害了,可以使用Jquery选择器的语法,轻松实现html的解析。
2、51job的搜索,关键字是放在中间的。刚开始我思考关键字怎么传的时候还走了点弯路。仔细琢磨发现很简单,就是放在中间,其他都是写死的。
欢迎大家讨论并发的相关问题,也可以加我的头条号: IT技术研习社 。