禅道api调用(爬虫方式)
目录
获取所有进行中的项目信息
url
postman
Java代码
实体类
逻辑处理
根据项目id获取指定项目下所有未关闭的任务id
url
postman
Java代码
总结
获取所有进行中的项目信息
url
http://禅道地址xxx/zentao/project-all-doing-项目ID-order_desc-0.html
postman
Java代码
关于禅道登录的业务实现大家可以参考这篇博客:http://t.csdn.cn/I2uPU
实体类
package com.example.zentaoaibackend.entity;import lombok.Data;
import java.util.Date;
import java.io.Serializable;public class ProjectInfoEntity extends BaseAttribute {/*** 项目ID*/private Integer projectId;/*** 项目名称*/private String name;/*** 项目代号*/private String code;/*** 项目负责人*/private String director;/*** 项目截止日期*/private Date endtime;/*** 是否参与消息推送*/private int joinStatus;/*** 钉钉群id*/private String dingGroupId;/*** 钉钉群名称*/private String dingGroupName;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getDirector() {return director;}public void setDirector(String director) {this.director = director;}public Date getEndtime() {return endtime;}public void setEndtime(Date endtime) {this.endtime = endtime;}public int getJoinStatus() {return joinStatus;}public void setJoinStatus(int joinStatus) {this.joinStatus = joinStatus;}public String getDingGroupId() {return dingGroupId;}public void setDingGroupId(String dingGroupId) {this.dingGroupId = dingGroupId;}public String getDingGroupName() {return dingGroupName;}public void setDingGroupName(String dingGroupName) {this.dingGroupName = dingGroupName;}public void setProjectId(Integer projectId) {this.projectId = projectId;}public Integer getProjectId() {return projectId;}}
逻辑处理
通过爬取返回的html页面格式如下图,我们根据给出的结构进行解析
import com.example.zentaoaibackend.entity.ProjectInfoEntity;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;public List<ProjectInfoEntity> GetDoingProjectInfo() {List<ProjectInfoEntity> doingProjectList = new ArrayList<>();try {//登录禅道zentaoLogin();//url地址String url = "http://127.0.0.1/zentao/project-all-doing-422-order_desc-0.html";//执行url,并传入cookieDocument doc = Jsoup.connect(url).cookie("zentaosid", Constant.ZENTAOID).get();//解析html页面,获取tr标签Elements tfElements = doc.select("table").select("tbody").select("tr");//遍历tr标签,根据任务状态获取对应的任务id,并放入到集合中for (Element element : tfElements) {//获取td标签Elements tdElements = element.select("td");//用于解析后的数据信息存储ProjectInfoEntity projectInfo = new ProjectInfoEntity();//遍历td标签for (Element tdElement : tdElements) {//判断当前遍历的标签中class元素是否包含text-left//包含:获取项目id//不包含:继续下一次遍历if (tdElement.attr("class").equals("text-left")) {//获取项目IDString attr = element.attr("data-id");//将项目ID传入到实体中projectInfo.setProjectId(Integer.valueOf(attr));//因为返回的有多个td标签中都包含了class='text-left'的元素,我们不能直接获取项目信息,需要进行判断//包含title元素:为项目代码;否则:为项目名称if (tdElement.attr("title").equals("")) {//项目代号projectInfo.setCode(tdElement.text());} else {//项目名称projectInfo.setName(tdElement.attr("title"));}}}doingProjectList.add(projectInfo);}} catch (Exception e) {System.out.println(e);}return doingProjectList;}
根据项目id获取指定项目下所有未关闭的任务id
url
http://禅道地址xxx/zentao/project-task-439-unclosed.html
postman
Java代码
package com.example.zentaoaibackend.utils.zentaoAPI;import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import static com.example.zentaoaibackend.utils.zentaoAPI.DoGet.doGet;
import static com.example.zentaoaibackend.utils.zentaoAPI.login.ZentaoLogin.zentaoLogin;/*** @BelongsProject: zentaoai-backend* @BelongsPackage: com.example.zentaoaibackend.utils.zentaoAPI* @Author: author* @CreateTime: 2022-11-26 11:14* @Description: 根据项目id获取指定项目下所有任务* @Version: 1.0*/
@Component
public class GetProjectTask extends IJobHandler {public List<String> GetTaskByProjectId(String projectId) throws IOException {List<String> unClosedList = new ArrayList<>();try {zentaoLogin();//url地址String url = "http://127.0.0.1/zentao/project-task-" + projectId + "-unclosed.html";//执行接口调用,并传入cookieDocument doc = Jsoup.connect(url).cookie("zentaosid", Constant.ZENTAOID).get();//解析html页面,获取tr标签Elements select = doc.select("table").select("tbody").select("tr");//遍历tr标签,根据任务状态获取对应的任务id,并放入到集合中for (Element element : select) {unClosedList.add(element.attr("data-id"));}} catch (Exception e) {System.out.println(e);}return unClosedList;}@Overridepublic ReturnT<String> execute(String s) throws Exception {return null;}
}
总结
注意:个别信息比较私密模糊展示不便于公开,请见谅!!
如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞、收藏脚印支持一下博主哦~
禅道api调用(爬虫方式)相关推荐
- 调用接口登录禅道_调用禅道api创建新用户
调用禅道api创建新用户 使用禅道API是一件非常麻烦的事,因为它没有详细的API文档. 官方在网站内嵌的API文档极其简略,根本不知道需要传递什么参数. 如何知道该如何使用它提供的API呢? 你必须 ...
- 【产品】禅道项目管理核心思想
1.禅道项目管理软件作用 禅道是由青岛易软天创网络科技有限公司开发,国产开源项目管理软件. 集产品管理.项目管理.质量管理.文档管理.组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整覆盖了 ...
- Linux 下禅道和 SVN、GIT 集成插件发布
Linux 下 SVN.GIT 可以和禅道集成了.在版本库中提交代码就可以自动更新关联禅道的任务和Bug.感谢网友张彪的开发. 一.下载地址 1.源代码:https://github.com/easy ...
- 禅道设置bug模板_一款热度很高的项目管理和bug工具,免费使用,可在公司推广哦...
以前在公司会用到各种bug管理工具,但使用最顺手的感觉还是禅道,主要是它除了能满足我的日常工作之外,用户体验上也做的不错 .前段时间领导碰巧看到了工具,觉得使用它管理项目应该不错,打算在全公司推广,让 ...
- 使用python实现对于chineseocr的API调用
ChineseOCR在线API 网页链接 界面 提供多种接口调用方式,比如在线调用.Javascript api调用.curl api调用和python api调用四种方式,本次使用javascrip ...
- 禅道 php api,云禅道有API的方式可以获取数据吗
api相关手册: api接口查看,可以本地搭建和云禅道相同版本的禅道,然后admin 后台 二次开发 api,可以查看接口列表. api调用步骤 PATH_INFO方式 1.访问 http://x.c ...
- 调用接口登录禅道_请教调用API新增禅道用户
原帖由 石洋洋 于 2019-12-12 09:25:59 发表 调用例子: PATH_INFO方式 1.访问 http://x.com/api-getsessionid.json获取禅道sessio ...
- 调用接口登录禅道_有java调用api登录并验证禅道的实例吗
展开全部 本文实例为大家分享了32313133353236313431303231363533e78988e69d8331333363396466JAVA的短信验证码api调用代码,供大家参考,具体内 ...
- python实现简单的api接口-简单实现Python调用有道API接口(最新的)
# ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...
最新文章
- 1012: [JSOI2008]最大数maxnumber
- 使用jsoup解析html
- 用池来提升对象的复用
- android安全性发展,Android未来发展 安全是重点
- oracle怎么查询模式名,oracle怎么查询数据库实例的三种方式
- android gridview拖动排序,Asp.net GridView 拖拽排序 原创(欢迎拍砖,敬请嘴下留情!)...
- 使用Executor管理Thread对象详解
- Linux下让Eclipse支持Python
- 立即生效!英特尔 CEO 从云计算巨头 VMware 卸任
- APP支付报错ALI40247处理方案!
- 欧几里得算法求最大公约数
- 原装win10下安装双系统win7
- (转) 那些无用的人----《人类简史》读后感
- 字符画-Python
- precision与Recall
- [韩国KBS][伟大的遗产]
- DJNZ指令:DJNZ R6,D2 ;
- javaweb 从数据库读取数据的详细操作
- 新版QQ功能录制屏幕、截取任意形状、屏幕文字识别
- C++ —— 自定义函数
热门文章
- censo7安装mysql_centso7.2上mysql安装
- 微信小程序加水印(含代码效果图)
- 韩老师坦克大战2.0版本
- 业界首个,冲量在线联合海光信息发布异构隐私计算一体机!
- SDM660 xbl阶段使能I2C 设备实现
- odoo 企业邮箱配置发送邮件
- 千兆级LTE的一小步,5G之路的一大步
- 五一劳动节,给父母发个红包吧
- win10专业版变远程服务器
- 基于mysql的应用程序设计[j] 兰旭辉_熊家军_邓刚_高校C语言自动考试系统参考文献...