首页 > 其他分享 >禅道api调用(爬虫方式)

禅道api调用(爬虫方式)

时间:2022-12-26 23:04:34浏览次数:60  
标签:return String 爬虫 api select org import public 禅道


目录

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

​​url​​

​​postman​​

​​Java代码​​

​​实体类​​

​​逻辑处理​​

​​根据项目id获取指定项目下所有未关闭的任务id​​

​​url​​

​​postman​​

​​Java代码​​

​​总结​​


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

url

​http://禅道地址xxx/zentao/project-all-doing-项目ID-order_desc-0.html​

postman

禅道api调用(爬虫方式)_List

Java代码

关于禅道登录的业务实现大家可以参考这篇博客

实体类

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页面格式如下图,我们根据给出的结构进行解析

禅道api调用(爬虫方式)_List

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,并传入cookie
Document 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")) {
//获取项目ID
String 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

禅道api调用(爬虫方式)_sed_03

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";
//执行接口调用,并传入cookie
Document 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;
}

@Override
public ReturnT<String> execute(String s) throws Exception {
return null;
}
}

总结

注意:个别信息比较私密模糊展示不便于公开,请见谅!!

如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞、收藏脚印支持一下博主哦~

标签:return,String,爬虫,api,select,org,import,public,禅道
From: https://blog.51cto.com/u_15921176/5971127

相关文章

  • Python爬虫 -- Selenium库的使用
    0x00Selenium库的作用模拟真实浏览器获取相关数据,比如有些网站检测token等值的时候,可以通过selenium库进行绕过0x01环境搭建1、安装selenium库pip3installselenium2、查......
  • 网络爬虫 -- 验证码识别
    0x00下载安装tesseract1、下载地址http://digi.bib.uni-mannheim.de/tesseract/2、安装成功后,配置环境变量3、检查是否设置成功tesseract-v4、安装tesseract库和pillow库......
  • 爬虫内容保存到txt文件
    0x01源码如下frompyqueryimportPyQueryimportrequestsurl="https://www.dandanzan10.top/dianying/index.html"heads={'user-agent':'Mozilla/5.0(WindowsN......
  • 爬虫学习笔记 -- 实战某电影网(lxml库版)
    0x01安装lxml库文件pip3installlxml0x02初始化字符串1、通过HTML类初始化字符串fromlxmlimportetreeimportrequestsurl="https://www.dandanzan10.top/dianying/i......
  • 爬虫学习笔记 -- requests库基础
    0x01requests库安装1、通过控制台运行下面代码pip3installrequests2、通过Pycharm安装,点击+号,搜索requests,然后点击安装 0x02GET请求1、普通请求importrequestsurl="h......
  • 爬虫学习笔记 -- 正则表达式
    0x01match1、从头开始匹配,只能匹配一次importrestr="1a2b3c456d7e890f"res=re.match('\d+',str)print(res.group())运行结果:12、通用匹配符.*?importrestr="11a2b3c456d7e......
  • 火山中文编程 -- 封装信息框API
     ......
  • Python网络爬虫概述
    文章目录​​一.掌握定向网络数据爬取和网页解析的基本能力​​​​二.python开发工具选择​​​​1.文本工具类IDE​​​​2.集成工具类IDE​​一.掌握定向网络数据爬......
  • D365: Graph API(三)程序调用Graph API
    D365:GraphAPI(三)程序调用GraphAPI在D365中,系统通过GraphAPIClient封装了GraphAPI接口,可以直接通过调用SysUserMSODSImportHelper::getGraphAPIClient().ListUsers()......
  • Python爬虫学习:Cookie 和 Session 的区别是什么?
    一、含义Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie......