对Form表单进行转化Object格式的处理

165 阅读1分钟
前言:在某水友群看到一名吹水,称自己在自学爬虫,遇到的响应数据为form表单Html结构,想对其进行处理成对象格式,如下图

image.png

响应数据长这样

目标: 把他转换为对象结构

直接上 代码

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;
}