目录

获取所有进行中的项目信息

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调用(爬虫方式)相关推荐

  1. 调用接口登录禅道_调用禅道api创建新用户

    调用禅道api创建新用户 使用禅道API是一件非常麻烦的事,因为它没有详细的API文档. 官方在网站内嵌的API文档极其简略,根本不知道需要传递什么参数. 如何知道该如何使用它提供的API呢? 你必须 ...

  2. 【产品】禅道项目管理核心思想

    1.禅道项目管理软件作用 禅道是由青岛易软天创网络科技有限公司开发,国产开源项目管理软件. 集产品管理.项目管理.质量管理.文档管理.组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整覆盖了 ...

  3. Linux 下禅道和 SVN、GIT 集成插件发布

    Linux 下 SVN.GIT 可以和禅道集成了.在版本库中提交代码就可以自动更新关联禅道的任务和Bug.感谢网友张彪的开发. 一.下载地址 1.源代码:https://github.com/easy ...

  4. 禅道设置bug模板_一款热度很高的项目管理和bug工具,免费使用,可在公司推广哦...

    以前在公司会用到各种bug管理工具,但使用最顺手的感觉还是禅道,主要是它除了能满足我的日常工作之外,用户体验上也做的不错 .前段时间领导碰巧看到了工具,觉得使用它管理项目应该不错,打算在全公司推广,让 ...

  5. 使用python实现对于chineseocr的API调用

    ChineseOCR在线API 网页链接 界面 提供多种接口调用方式,比如在线调用.Javascript api调用.curl api调用和python api调用四种方式,本次使用javascrip ...

  6. 禅道 php api,云禅道有API的方式可以获取数据吗

    api相关手册: api接口查看,可以本地搭建和云禅道相同版本的禅道,然后admin 后台 二次开发 api,可以查看接口列表. api调用步骤 PATH_INFO方式 1.访问 http://x.c ...

  7. 调用接口登录禅道_请教调用API新增禅道用户

    原帖由 石洋洋 于 2019-12-12 09:25:59 发表 调用例子: PATH_INFO方式 1.访问 http://x.com/api-getsessionid.json获取禅道sessio ...

  8. 调用接口登录禅道_有java调用api登录并验证禅道的实例吗

    展开全部 本文实例为大家分享了32313133353236313431303231363533e78988e69d8331333363396466JAVA的短信验证码api调用代码,供大家参考,具体内 ...

  9. python实现简单的api接口-简单实现Python调用有道API接口(最新的)

    # ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...

最新文章

  1. 1012: [JSOI2008]最大数maxnumber
  2. 使用jsoup解析html
  3. 用池来提升对象的复用
  4. android安全性发展,Android未来发展 安全是重点
  5. oracle怎么查询模式名,oracle怎么查询数据库实例的三种方式
  6. android gridview拖动排序,Asp.net GridView 拖拽排序    原创(欢迎拍砖,敬请嘴下留情!)...
  7. 使用Executor管理Thread对象详解
  8. Linux下让Eclipse支持Python
  9. 立即生效!英特尔 CEO 从云计算巨头 VMware 卸任
  10. APP支付报错ALI40247处理方案!
  11. 欧几里得算法求最大公约数
  12. 原装win10下安装双系统win7
  13. (转) 那些无用的人----《人类简史》读后感
  14. 字符画-Python
  15. precision与Recall
  16. [韩国KBS][伟大的遗产]
  17. DJNZ指令:DJNZ R6,D2 ;
  18. javaweb 从数据库读取数据的详细操作
  19. 新版QQ功能录制屏幕、截取任意形状、屏幕文字识别
  20. C++ —— 自定义函数

热门文章

  1. censo7安装mysql_centso7.2上mysql安装
  2. 微信小程序加水印(含代码效果图)
  3. 韩老师坦克大战2.0版本
  4. 业界首个,冲量在线联合海光信息发布异构隐私计算一体机!
  5. SDM660 xbl阶段使能I2C 设备实现
  6. odoo 企业邮箱配置发送邮件
  7. 千兆级LTE的一小步,5G之路的一大步
  8. 五一劳动节,给父母发个红包吧
  9. win10专业版变远程服务器
  10. 基于mysql的应用程序设计[j] 兰旭辉_熊家军_邓刚_高校C语言自动考试系统参考文献...