91 lines
4.2 KiB
JavaScript
91 lines
4.2 KiB
JavaScript
const getSpfsjtjData = () => {
|
||
const res = {};
|
||
const root = document.querySelectorAll('.portlet')[1];
|
||
Object.keys(rootDefined.spfsjtj.childMap).forEach((moduleKey, index) => {
|
||
res[moduleKey] = {};
|
||
const moduleDom = root.querySelectorAll('td table')[index];
|
||
const moduleFiledMap = rootDefined.spfsjtj.childMap[moduleKey].childMap;
|
||
Object.keys(moduleFiledMap).forEach((fieldKey, fieldIndex) => {
|
||
const fieldDom = moduleDom.querySelectorAll('tr')[fieldIndex + 1].querySelectorAll('td')[1];
|
||
res[moduleKey][fieldKey] = fieldDom.innerText.trim();
|
||
});
|
||
});
|
||
return res;
|
||
}
|
||
|
||
const getClfwsqytjData = () => {
|
||
const res = {};
|
||
const root = document.querySelectorAll('.portlet')[2];
|
||
Object.keys(rootDefined.clfwsqytj.childMap).forEach((moduleKey, index) => {
|
||
res[moduleKey] = {};
|
||
const moduleDom = root.querySelectorAll('td table')[index];
|
||
const moduleFiledMap = rootDefined.clfwsqytj.childMap[moduleKey].childMap;
|
||
Object.keys(moduleFiledMap).forEach((fieldKey, fieldIndex) => {
|
||
const fieldDom = moduleDom.querySelectorAll('tr')[fieldIndex + 1].querySelectorAll('td')[1];
|
||
res[moduleKey][fieldKey] = fieldDom.innerText.replaceAll(' ', '');
|
||
});
|
||
});
|
||
return res;
|
||
}
|
||
|
||
const getClfwdtjData = () => {
|
||
const res = {};
|
||
const root = document.querySelectorAll('.portlet')[3];
|
||
Object.keys(rootDefined.clfwdtj.childMap).forEach((moduleKey) => {
|
||
const tableDomList = root.querySelectorAll('td table');
|
||
const moduleFiledMap = rootDefined.clfwdtj.childMap[moduleKey].childMap;
|
||
const dataList = [];
|
||
if (moduleKey === 'broker') {
|
||
// 纵向表格,数据在第2、3个table中
|
||
const trList = [...tableDomList[1].querySelectorAll('tr')].slice(1).concat([...tableDomList[2].querySelectorAll('tr')].slice(1));
|
||
trList.forEach(trDom => {
|
||
const dataItem = {};
|
||
Object.keys(moduleFiledMap).forEach((fieldKey, fieldIndex) => {
|
||
const fieldDom = trDom.querySelectorAll('td')[fieldIndex];
|
||
dataItem[fieldKey] = fieldDom.innerText.trim();
|
||
});
|
||
dataList.push(dataItem);
|
||
});
|
||
} else if (moduleKey === 'area') {
|
||
// 横向表格,数据在第5个table中
|
||
const trList = [...tableDomList[4].querySelectorAll('tr')];
|
||
Object.keys(moduleFiledMap).forEach((fieldKey, fieldIndex) => {
|
||
const tdList = [...trList[fieldIndex].querySelectorAll('td')].slice(1);
|
||
tdList.forEach((tdDom, tdIndex) => {
|
||
if (!dataList[tdIndex]) {
|
||
dataList[tdIndex] = {};
|
||
}
|
||
dataList[tdIndex][fieldKey] = tdDom.innerText.trim();
|
||
});
|
||
});
|
||
} else if (moduleKey === 'district') {
|
||
// 横向表格,数据在第4个table中,叠加在一起,每组数组占据3行,例如,总共9行数据,则1-3为第一组,4-6为第二组,7-9为第三组,三组加起来为一个完整的数据项
|
||
const trList = [...tableDomList[3].querySelectorAll('tr')];
|
||
const groupSize = Object.keys(moduleFiledMap).length; // 每组数据占据的行数
|
||
for (let trIndex = 0; trIndex < trList.length; trIndex++) {
|
||
const fieldIndex = trIndex % groupSize; // 当前行对应的字段索引
|
||
const tdList = [...trList[trIndex].querySelectorAll('td')].slice(1);
|
||
const startIndex = Math.floor(trIndex / groupSize) * tdList.length; // 当前组的起始行索引
|
||
tdList.forEach((tdDom, tdIndex) => {
|
||
if (!dataList[startIndex + tdIndex]) {
|
||
dataList[startIndex + tdIndex] = {};
|
||
}
|
||
const fieldKey = Object.keys(moduleFiledMap)[fieldIndex];
|
||
dataList[startIndex + tdIndex][fieldKey] = tdDom.innerText.trim();
|
||
});
|
||
|
||
}
|
||
}
|
||
res[moduleKey] = dataList;
|
||
});
|
||
return res;
|
||
}
|
||
|
||
|
||
const extractData = () => {
|
||
return {
|
||
spfsjtj: getSpfsjtjData(),
|
||
clfwsqytj: getClfwsqytjData(),
|
||
clfwdtj: getClfwdtjData(),
|
||
}
|
||
} |