JAVA爬虫框架

article/2025/10/17 2:54:37

WebMagic框架

webmagic结构分为Downloader,pageProcessor,Scheduler,pipeline四大组件  并由splider将他们组织起来   这四大组件对应着爬虫生命周期中的下载  处理  管理  和持久化等功能,

在这里插入图片描述依赖

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency><!-- https://mvnrepository.com/artifact/us.codecraft/webmagic-extension --><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.3</version></dependency><!--布隆过滤器--><!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.1-jre</version></dependency>
     <dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency>

在这里插入图片描述数据库采用的是springdata JPA
配置文件

spring.jpa.database=mysql
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/movies?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123123

代码是建立在spring boot之上的 需要开启定时任务
爬虫主要代码


@Component
public class JobProcesser implements PageProcessor {private String url = "https://search.51job.com/list/090200,000000,0000,38,9,99,JAVA,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=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=";//解析页面@Overridepublic void process(Page page) {//解析页面 获取招聘信息详情的url地址List<Selectable> list = page.getHtml().css("div#resultList div.el").nodes();
//判断获取到的集合是否为空 如果为空表示这是招聘详情页   如果不为空表示这是列表页if (list.size() == 0) {
//            如果为空  表示这是招聘详情页 解析页面获取招聘信息 保存数据this.saveJobInfo(page);} else {
//   如果不为空   解析详情页的url地址 放到任务队列中for (Selectable selectable:list){String jobInfoUrl = selectable.links().toString();page.addTargetRequest(jobInfoUrl);   //把获取到的url地址放到任务队列中}
//                获取下一页的urlString bkurl = page.getHtml().css("div.p_in li.bk").nodes().get(1).links().toString();
//            把url放到任务队列中page.addTargetRequest(bkurl);}}//解析页面获取招聘信息 保存数据private void saveJobInfo(Page page) {
//        创建对象Job job = new Job();//        解析页面Html html = page.getHtml();//        获取数据job.setCompanyName(String.valueOf(html.css("div.cn p.cname a","text")));job.setCompanyAddr(Jsoup.parse(html.css("div.bmsg").nodes().get(1).toString()).text() );job.setCompanyInfo(Jsoup.parse(html.css("div.tmsg").toString()).text());job.setJobName(html.css("div.cn h1","text").toString());job.setJobAddr(html.css("div.cn p.msg","title").toString());job.setJobInfo(Jsoup.parse(html.css("div.job_msg").toString()).text());job.setUrl(page.getUrl().toString());job.setSalaryMax(Jsoup.parse(html.css("div.cn strong").toString()).text());job.setSalaryMin("");String time = html.css("div.cn p.msg","title").toString();job.setTime(time.substring(time.length()-8));
//        把结果保存起来page.putField("jobinfo",job);}private Site site = Site.me().setCharset("gbk").setTimeOut(10 * 1000)  //超时时间.setRetrySleepTime(3000).setRetryTimes(3);@Overridepublic Site getSite() {return site;}
@Autowired
SpringDataPipeline springDataPipeline;//  initialDelay 当任务启动后  等多久执行方法
//    fixedDelay   每隔多久执行一次@Scheduled(initialDelay = 1000, fixedDelay = 100 * 1000)public void process() {Spider.create(new JobProcesser()).addUrl(url).setScheduler(new QueueScheduler().setDuplicateRemover(new BloomFilterDuplicateRemover(100000))).thread(10).addPipeline(springDataPipeline).run();}
}

其他代码就是对数据库的增删查改了


http://chatgpt.dhexx.cn/article/e98Gnreu.shtml

相关文章

一款非常牛逼的Java爬虫框架(高度灵活可配置)

点击关注公众号&#xff0c;利用碎片时间学习 介绍 平台以流程图的方式定义爬虫,是一个高度灵活可配置的爬虫平台 特性 支持Xpath/JsonPath/css选择器/正则提取/混搭提取支持JSON/XML/二进制格式支持多数据源、SQL select/selectInt/selectOne/insert/update/delete支持爬取JS动…

svn 图标不显示 window10

今天打开电脑&#xff0c;同步代码的时候&#xff0c;发现&#xff0c;所有的目录svn的图标都不显示了。 早在几年前遇到过一次&#xff0c;通过clear可以恢复&#xff0c;可是这次几次clear也不管用。 然后&#xff0c;果断打开svn的设置。找到图标的设定。 设定如下&#…

win10 SVN图标不显示 已解决

原因&#xff1a; SVN的图标的排位顺序排在下面去了&#xff0c;导致其它图标占用了它的位置&#xff0c;也就是需要把Tortoise的位置提到上面来 解决办法&#xff1a; winR&#xff0c;输入regedit进入注册表 ctrlf搜索ShellIconOverlayIdentifiers&#xff08;这里需要一会…

SVN文件夹不显示图标解决方法

从svn服务器上将文件夹导出到本地文件之后&#xff0c;svn相关文件夹没有显示相应的图标&#xff0c;解决方法如下。对于SVN来说&#xff0c;因为每个图标都代表着不同的含义&#xff0c;预示着不同的状态&#xff0c;是指示灯的作用&#xff0c;如果没有正确的图标很可能造成数…

win10 SVN 图标不显示的解决办法

win10 SVN 图标不显示的解决办法 前言一、进入注册表二、设置文件名三、重启四、检查五、原理 前言 项目关联到 SVN 之后&#xff0c;一般情况下会有各种各样的状态图标。用来标注本地与 SVN 版本异同情况。但是有时候看不到示意图标&#xff0c;今天记录一下解决办法。 一、…

svn图标没有显示的解决办法

解决办法&#xff1a; 1.打开注册表 键盘输入winr 运行&#xff0c;打开 regedit 2.修改注册表 打开注册表的如下路径&#xff0c;将前几个名字重命名&#xff0c;把名字前面的空格去掉&#xff0c;修改完成后&#xff0c;重启电脑即可。 \HKEY_LOCAL_MACHINE\SOFTWARE\Micr…

SVN、GIT图标不显示解决方案

1、WIN R打开 “运行”&#xff0c;输入"regedit"&#xff0c;打开注册表&#xff0c;然后复制下面的地址到地址栏&#xff0c;如下&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers如上图…

svn的图标突然不显示了

摘抄 https://www.jianshu.com/p/92e8e1f345c0 摘抄 https://www.jianshu.com/p/92e8e1f345c0 摘抄 https://www.jianshu.com/p/92e8e1f345c0 作者&#xff1a;易冷zzz 链接&#xff1a;https://www.jianshu.com/p/92e8e1f345c0 来源&#xff1a;简书 著作权归作者所有。商业转…

解决 win11 git svn 图标问题

不要怀疑&#xff0c;我尝试过网上各种修复方式&#xff0c;也下载过各种修复工具&#xff0c;然都失败了。 别迟疑&#xff0c;以下是最有效的方法&#xff1a; 1、winr&#xff0c;输入 regedit 打开注册表&#xff1b; 2、找到路径【计算机\HKEY_LOCAL_MACHINE\SOFTWARE\M…

Mac SnailSVN不显示状态图标

snailsvn 官网 依次打开 系统设置 -> 扩展 -> 查找程序调整优先级(优先级按降序排序)在我的扩展中没有找到排序功能, 就暂时禁用掉了 有关文件夹操作的拓展. (作者的描述: 如果有多个 Finder 扩展同时监视同一文件夹, 会有优先级问题, 只有最先出现的扩展才能添加图标…

SVN图标消失解决方案

1、首先打开注册表 WINR组合键打开运行窗口&#xff0c;输入regedit命令并回车 2、打开注册表窗口后然后找到以下目录&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 3、将我们需要的文件前面加上空…

解决svn文件图标不显示

1.首先检查svn设置中是否设置图标显示 2.winR&#xff0c;输入regedit&#xff0c;调出注册表信息&#xff0c;按下CtrlF,在注册表里搜索“ShellIconOverlayIdentifiers”查看是否存在Tortoise文件&#xff0c;存在直接跳到第四步&#xff0c;不存在&#xff0c;进行第三步 3. …

【SVN】win10下SVN图标不显示

目录 一、现象 二、打开注册表 三、找到SVN路径 四、重启电脑 一、现象 windows10绿色ICON不显示 二、打开注册表 winR 打开运行&#xff0c;输入regedit 三、找到SVN路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdent…

svn服务器调整显示图标修改,svn图标不显示可以通过调整Tortoise图标名称的字母顺序来解决...

svn图标不显示可以通过调整Tortoise图标名称的字母顺序来解决 发布时间&#xff1a;2013-06-02 17:28:13 作者&#xff1a;佚名 我要评论 我们可以调整Tortoise图标名称的字母顺序&#xff0c;来提高Tortoise的优先位置&#xff0c;因为Windows 内部就是安装名称的字母顺序…

win10系统解决Svn图标不显示的问题

win10系统解决Svn图标不显示的问题 1.问题 刚才对ruoyi的文件进行了修改但是没有任何的修改的符号。我该如何恢复图标呢&#xff1f; 2.解决策略-修改注册表 出现问题的原因&#xff1a;图标名称优先级不够,不能被使用 第一步&#xff1a;winR&#xff0c;输入regedit 第二…

svn图标不显示

svn图标不显示解决方案 输入win r,在命令行内输入regedit&#xff0c; 如下&#xff1a; 点击确定后&#xff0c;会进入到注册表界面 红框中的就是svn对应状态的图标名字&#xff0c;由于此列表中的名字是按照首字母顺序排布的&#xff0c;所以SVN的图标有可能排在后面&…

关于 SVN状态图标不显示的问题(只显示绿色钩匹配) 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/124147620 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿…

SVN状态图标不显示的两种解决办法

文章目录 第一种方法第二种方法 首先情况如下&#xff1a; 这样看不到状态是不是就很难受 本博主最近也是第一次使用SVN做版本控制 然后就出现了这样的情况 后来经过查询才知道SVN刚下载安装后 设置什么的都是默认的 需要手动设置一下就OK啦 第一种方法 我们先在桌面或者资源…

解决SVN左下角图标不显示(图文详解)

SVN中文件左下角图标消失的解决步骤 首先解释以下为什么会发生这样的现象&#xff1a; 因为WindowsExporerShell所支持的Overlay Icon最多十五个&#xff0c;当前面十五个被其他软件或者windows系统自身占用&#xff0c;svn就被顶掉从而无法使用&#xff0c;结果就是图标消失。…

FreeSWITCH之日志级别

1、控制台设置日志级别 // 从 0-7 级别越大 console loglevell 72、sip详细日志 // on开启/off关闭 sofia profile internal siptrace on/off3、mod_logfile模块 // 模块位置 conf/autoload_configs/logfile.conf.xml。// 如果修改了使用下方命令加载生效 reload mod_logfi…