前言:在某水友群看到一名吹水,称自己在自学爬虫,遇到的响应数据为form表单Html结构,想对其进行处理成对象格式,如下图
响应数据长这样
目标: 把他转换为对象结构
直接上 代码
function MapFormHtmlForObject(originData) {
let MapNewData = {};
//对源头Action进行处理
originData
.slice(originData.indexOf('<form'), originData.indexOf('>'))
.split(' ')
.forEach((f) => {
if (f.includes('action')) {
MapNewData.action = f.split('=')[1].replace(/\"/g, '');
}
});
//接下来就是它的请求体部分处理
let head = '<input type="hidden"';
let end = '</form>';
let hindex = originData.indexOf(head);
let eindex = originData.indexOf(end);
let MapArr = originData.slice(hindex, eindex).split('>');
MapArr.map((item) => {
let includesArr = item
.split(' ')
.filter((n) => n.includes('name') || n.includes('value'))
.map((v) => v.split('=')[1]);
if (!includesArr?.length) {
return false;
}
return includesArr;
})
.filter(Boolean)
.forEach((j) => {
MapNewData[j[0].replace(/\"/g, '')] = j[1].replace(/\"/g, '');
});
return MapNewData;
}