免费网站站长推广网站排名外包

web/2025/10/4 6:59:08/文章来源:
免费网站站长推广,网站排名外包,深圳响应式建站,linux7 下载wordpressJava爬虫 爬取某招聘网站招聘信息 一、系统介绍二、功能展示1.需求爬取的网站内容2.实现流程2.1数据采集2.2页面解析2.3数据存储 三、其它1.其他系统实现 一、系统介绍 系统主要功能#xff1a;本项目爬取的XX招聘网站 二、功能展示 1.需求爬取的网站内容 2.实现流程 爬虫… Java爬虫 爬取某招聘网站招聘信息 一、系统介绍二、功能展示1.需求爬取的网站内容2.实现流程2.1数据采集2.2页面解析2.3数据存储 三、其它1.其他系统实现 一、系统介绍 系统主要功能本项目爬取的XX招聘网站 二、功能展示 1.需求爬取的网站内容 2.实现流程 爬虫可以分为三个模块数据采集数据解析数据保存 项目结构 2.1数据采集 ​ 数据采集主要是通过HttpClient去请求url获取网页源码。 注除了HttpClient还可以用HttpUtil具体使用方式可以百度得到这里贴出两种工具的使用代码实现的功能是一样的 在pom.xml配置相关依赖 HttpClient: dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.9/version /dependencyHttpUtil: dependencygroupIdnet.sourceforge.htmlunit/groupIdartifactIdhtmlunit/artifactIdversion2.27/version /dependency两种工具看个人喜好选择本项目选择的是HttpClient.建议使用htmlunithtmlunit爬内容相对齐全。 HTTPClient与HttpUtil的使用方法 HTTPClient package com.master.controller;import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.utils.HttpClientUtils; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils;import java.io.IOException;public class HttpClientDownPage {//设置代理模范浏览器private static final String USER_AGENT Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36;public static String sendGet(String url){//1.生成httpclient相当于该打开一个浏览器CloseableHttpClient httpClient HttpClients.createDefault();//设置请求和传输超时时间RequestConfig requestConfig RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();CloseableHttpResponse response null;String html null;//2.创建get请求相当于在浏览器地址栏输入 网址HttpGet request new HttpGet(url);try {request.setHeader(User-Agent,USER_AGENT);request.setConfig(requestConfig);//3.执行get请求相当于在输入地址栏后敲回车键response httpClient.execute(request);//4.判断响应状态为200进行处理if(response.getStatusLine().getStatusCode() HttpStatus.SC_OK) {//5.获取响应内容HttpEntity httpEntity response.getEntity();html EntityUtils.toString(httpEntity, GBK);} else {//如果返回状态不是200比如404页面不存在等根据情况做处理这里略System.out.println(返回状态不是200);System.out.println(EntityUtils.toString(response.getEntity(), utf-8));}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//6.关闭HttpClientUtils.closeQuietly(response);HttpClientUtils.closeQuietly(httpClient);}return html;} } HttpUtil package com.master.controller;import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage;public class HttpUtilDownPage {//新建一个模拟谷歌Chrome浏览器的浏览器客户端对象private static final WebClient webClient new WebClient(BrowserVersion.CHROME);public static String sendGet(String url){//当JS执行出错的时候是否抛出异常, 这里选择不需要webClient.getOptions().setThrowExceptionOnScriptError(false);//当HTTP的状态非200时是否抛出异常, 这里选择不需要webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);webClient.getOptions().setActiveXNative(false);//是否启用CSS, 因为不需要展现页面, 所以不需要启用webClient.getOptions().setCssEnabled(false);//很重要启用JSwebClient.getOptions().setJavaScriptEnabled(true);//很重要设置支持AJAXwebClient.setAjaxController(new NicelyResynchronizingAjaxController());HtmlPage page null;try {page webClient.getPage(url);} catch (Exception e) {e.printStackTrace();}finally {webClient.close();}//异步JS执行需要耗时,所以这里线程要阻塞30秒,等待异步JS执行结束webClient.waitForBackgroundJavaScript(30000);//直接将加载完成的页面转换成xml格式的字符串String pageXml page.asXml();return pageXml;} } 上面两种方法都可请求到页面源码信息这里用的是字符串接收下来。 注如果使用HttpClient,有些网页无法获取到全部的页面代码信息,可换成HttpUtil尝试如果还是不行那可能是该网站采取了一些反爬措施需要小伙伴自己动脑解决了 2.2页面解析 页面源码请求下来了那么就轮到页面解析模块出厂了。 ​ 我们看到的网页本质上都是由一个个标签嵌套组合而成再加上jscss等渲染成一个美观的页面但是我们需要的的数据所以摒除绚丽的外观我们只需要解析出目标数据所在的标签就行了。 ​ 解析页面的方法也有多种有htmlcleanerJsoup等这里使用的是JsoupHTMLCleaner使用标签的Xpath解析Xpath可以在浏览器中 进行一下操作 ctrlshiftc然后找到目标标签点击鼠标右键选择copy,会有cpoy Xpath选项即可具体玩转需要小伙伴自己去探索因为笔者也不懂。。。 ​ 使用Jsoup在springboot中只需配置相关依赖便可使用 !--Jsoup--dependencygroupIdorg.jsoup/groupIdartifactIdjsoup/artifactIdversion1.11.3/version/dependency将获取的网页信息通过Jsoup.parse(content)方法转化成Document对象传到解析模块解析模块相关代码 private void paraseList(Document document) throws InterruptedException {//根据网页标签解析源码Elements elements document.getElementsByClass(sojob-item-main clearfix);for(Element element:elements){Elements elements1 element.select(h3);String job elements1.attr(title);Elements elements2 element.select(.condition);String all elements2.attr(title);String[] a all.split(_);String salary a[0];String address a[1];String require a[2]a[3];Elements elements3 (element.select(.temptation)).select(span);String welfare elements3.text();//公司名称Elements elements4 (element.select(.company-name)).select(a);String companyname elements4.text();Job jobs new Job();//kay是字段名 value是字段值jobs.setJob(job);jobs.setSalary(salary);jobs.setAddress(address);jobs.setCompanyname(companyname);jobs.setRequire(require);jobs.setWelfare(welfare);list.add(jobs);}}这里是解析页面获取想要的职位信息将解析的数据封装到QCPage中效果图如下 2.3数据存储 ​数据解析完就差数据存储了。 笔者采用了excel存储 public void saveXls(List list,String name) {//第一步创建一个workbook对应一个excel文件HSSFWorkbook workbook new HSSFWorkbook();//第二部在workbook中创建一个sheet对应excel中的sheetHSSFSheet sheet workbook.createSheet(招聘表);//第三部在sheet表中添加表头第0行老版本的poi对sheet的行列有限制HSSFRow row sheet.createRow(0);//第四步创建单元格设置表头HSSFCell cell row.createCell(0);cell.setCellValue(招聘公司);cell row.createCell(1);cell.setCellValue(岗位名称);cell row.createCell(2);cell.setCellValue(岗位薪资);cell row.createCell(3);cell.setCellValue(工作地点);cell row.createCell(4);cell.setCellValue(岗位要求);cell row.createCell(5);cell.setCellValue(福利待遇);//第五步写入实体数据实际应用中这些数据从数据库得到,对象封装数据集合包对象。对象的属性值对应表的每行的值for (int i 0; i list.size(); i) {HSSFRow row1 sheet.createRow(i 1);//创建单元格设值row1.createCell(0).setCellValue(((Job) list.get(i)).getCompanyname());row1.createCell(1).setCellValue(((Job) list.get(i)).getJob());row1.createCell(2).setCellValue(((Job) list.get(i)).getSalary());row1.createCell(3).setCellValue(((Job) list.get(i)).getAddress());row1.createCell(4).setCellValue(((Job) list.get(i)).getRequire());row1.createCell(5).setCellValue(((Job) list.get(i)).getWelfare());}File file new File(D:/name.xls);if (file.exists()) {file.delete();}//将文件保存到指定的位置try {file.createNewFile();FileOutputStream fos new FileOutputStream(file);workbook.write(fos);System.out.println(写入成功);workbook.close();} catch ( IOException e) {e.printStackTrace();}}效果 三、其它 1.其他系统实现 JavaSwing实现学生选课管理系统 JavaSwing图书管理系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宣武网站建设服务如何应对网络舆情

题目链接 这是一道很棒的二分题。 思路: 首先先思考什么情况下是可以无限的使用,即输出-1. 我们思考可知,如果每一秒内所有设备的用电量总和小于等于充电器每秒可以充的电,那么这一群设备就可以无限使用。 接下来分析不是无限使用…

好公司网站建设价格低网络新技术有哪些

6-使用通配符进行过滤 6.1-LIKE操作符 前面介绍的所有操作符都是通过已知的值进行过滤,或者检查某个范围的值。但是如果我们想要查找产品名字中含有bag的数据,就不能使用前面那种过滤情况。 利用通配符,可以创建比较特定数据的搜索模式。 …

个人网站备案费用装修平台网站有哪些

目录下有文件,并且权限也是够的,都是就是是没有。 解决方法: 进入/bin,执行命令 file bash 如上图,可以发现,bash是32-bit, 进入app所在目录,执行 file app 如上图&#xff0…

免费甜点网站模板下载网站开发怎么使用维语

题目: 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手。幸运的是,小岛上有一扇上古之神打造的封印之门,可以通往近卫军团,传闻至今没有人能解除封印。 封印之门上有一串文字,只包…

网站开发中所需要的绘图工具福州市工程造价信息网

什么段 我们在学习微机原理的时候就遇到过段,它代表在一个可执行文件中各种的类型信息存放的地方。   正文段:text用于存储指令;   数据段:data用于存储已初始化的全局变量;   bss段:用来存放程序中未…

学网站建设软件开发北京做网站好的网站建设公司

引文 很多教程,开始教python,就是语法呀,字符类型这些基础的,虽说是基础,你也不能说没用。 但是,对于前期要快速成长的我们来说,属实不够看。 我们是新手,我们是菜鸟,但…

视频网站 备案wordpress会员体系

近日,由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布「2023年度第三期金融信创优秀解决方案」,中科驭数超低时延网络解决方案从众多方案中脱颖而出,成功入选,代表了该方案的技术创新和金融实践…

网站建设解决问题WordPress入门编辑器

先来看几道Redis面试题: redis为什么是key,value的,为什么不是支持SQL的?redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看)redis的持久化开启了RDB和…

网站上如何做跳转页面深圳赶集同城网站建设

jquery 延迟加载代码您见过那些具有许多属性的巨大物体吗? 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载? 我敢打赌你有这种令人怀疑的快乐。 今天,我想与您分享我对它们的印象- 使用延迟加载应被视为一种代码味道&#x…

建大型购物网站开发一个网站的成本

一、引言 随着信息技术的广泛应用,网络安全问题日益突出,为确保信息系统安全、稳定、可靠运行,保障国家安全、公共利益和个人信息安全,根据《网络安全法》及《信息安全技术 网络安全等级保护基本要求》(等保2.0&#x…

网站建设行业论坛个人网站做导航网站

一、简介 本章将带领你进入 Docker 的世界。 什么是 Docker? 用它会带来什么样的好处? 好吧,让我们带着问题开始这神奇之旅。 1.什么是 Docker Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目&…

网站设计与建设报告桂林互联网

如果你带着热爱专注地做些事,很多有趣的事就会随之而来。

网站空间付款方式小程序开发教程电子书

1、什么是SQL注入攻击 概述 攻击者在 HTTP 请求中注入恶意的 SQL 代码,服务器使用参数构建数据库 SQL 命令时,恶意SQL 被一起构造,并在数据库中执行。 注入方法 用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’’…

阿里云 建网站攻略哪些网站有中文域名

文章目录 前言背景介绍平台支持仅支持watchOS支持watchOS和iOS 基本用法预定义样式根据触发器值选择样式使用场景当值更改时触发使用条件闭包触发使用反馈闭包触发 可以运行 Demo总结 前言 SwiftUI 引入了新的 sensoryFeedback 视图修饰符,使我们能够在所有 Apple …

网站改标题彩票网站建设平台

第四次作业【贪心算法】 文章目录 第四次作业【贪心算法】<1> 算法分析题4-1 会场安排问题<2> 算法实现题4-9 虚拟汽车加油问题<3> 算法实现题4-13 非单位时间任务安排问题<4> 算法实现题4-14 多元Huffman编码问题 <1> 算法分析题4-1 会场安排问…

绍兴网站制作套餐四川省招标投标网公告

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;InfoQ签约作者&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你…

Seo建设网站的步骤市场营销培训

PostgreSQL jsonb jsonb 函数以及操作符 在PostgreSQL中&#xff0c;有许多用于处理JSONB数据类型的内置函数和操作符。下面列出了一些常用的JSONB函数和操作符&#xff1a; jsonb_pretty(jsonb) 该函数将JSONB数据格式化为易读的多行字符串。jsonb_typeof(jsonb) 该函数返回…

销售网站html源码郑州网站建设最低价

先在OrCAD软件 导出画好的图&#xff1a; 去PCBEditor软件&#xff1a; 画版图框框&#xff1a; 可以手动画也可以代码画&#xff0c;前提是使用line的操作。 命令画 x 0 0 x 1000 0 x 1000 1000 X 0 1000 X 0 0 就可以了 显示格点 修改格点&#xff1a; 导入…

做简单网站怎么做西安驾校网站建设

让 PHP 支持 MySQLPHP 有专有的 MySQL 函数库以使用操作 MYSQL 数据库。在 PHP 5 及以后版本中不再默认支持 MySQL &#xff0c;所以在运行这些库之前&#xff0c;请确定 php.ini 加载了 MySQL 数据库支持&#xff1a;extension mysql.dllMySQL 连接mysql_connect() 函数用于开…

go 网站开发企业邮箱注册申请163免费

额尔古纳传说是蒙古祖先的发源地。这是通往那里的路标&#xff0c;用蒙古、汉、英、俄四种语言。8月的中俄国际象棋对抗赛将在这里举行。黑山头镇一个叫“卓娅”的饭店&#xff0c;里面有几个俄罗斯服务员&#xff0c;看着年龄都很小。这个站的姑娘叫“柳巴”&#xff0c;看着是…