首页 > 其他分享 >建设库数据爬取

建设库数据爬取

时间:2024-04-14 18:44:18浏览次数:29  
标签:function return data json 爬取 建设 time var 数据

1. python部分:
# -*- coding:utf-8 -*-

# @Time : 2024/4/14 17:57
# @Author : 快乐的小猴子
# @Version : 
# @Function : 

import requests
import json
import subprocess
from functools import partial   # 专门用来固定参数的
subprocess.Popen = partial(subprocess.Popen, encoding = "utf-8")
import execjs
with open('建设库.js', 'r', encoding='utf-8') as f:
    json_data = f.read()

context = execjs.compile(json_data)
res = context.call('main')

url = 'https://capi.jiansheku.com/nationzj/jskBid/page'
headers = {
    "Content-Type": "application/json",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
    "Referer": "https://www.jiansheku.com/",
    "Sign": res['Sign'],
    "Timestamp": str(res['Timestamp'])
}
# print(headers)
# exit()
data = {
    "page": {
        "page": 1,
        "limit": 20,
        "field": ""
    },
    "jskBidQueryDto": {
        "province": "",
        "city": "",
        "county": "",
        "tenderStage": "",
        "tenderingManner": "",
        "queryScope": "",
        "projectType": "",
        "subjectMatter": "",
        "source": "",
        "phonePoint": ""
    },
    "keyword": "",
    "keywordNot": ""
}
resp = requests.get(url, headers=headers, data=json.dumps(data, separators=(',', ':')))
print(resp.json())

2. JavaScript部分:

let crypto = require('crypto');
function do_md5(e) {
    return crypto.createHash('md5').update(e.toString()).digest('hex');
}
var f = (new Date).getTime();
var data = {
    "page": {
        "page": 1,
        "limit": 20,
        "field": ""
    },
    "jskBidQueryDto": {
        "province": "",
        "city": "",
        "county": "",
        "tenderStage": "",
        "tenderingManner": "",
        "queryScope": "",
        "projectType": "",
        "subjectMatter": "",
        "source": "",
        "phonePoint": ""
    },
    "keyword": "",
    "keywordNot": ""
};
var ku = function e(t) {
    var n;
    if (Array.isArray(t)) {
        for (var r in n = new Array,
        t) {
            var o = t[r];
            for (var i in o)
                null == o[i] ? delete t[r][i] : Array.isArray(t[r][i]) && e(t[r][i])
        }
        return n = t,
        JSON.stringify(n).replace(/^(\s|")+|(\s|")+$/g, "")
    }
    return n = t && t.constructor === Object ? JSON.stringify(t) : t
};
var Ou = function(e) {
    var t = new Array
      , n = 0;
    for (var i in e)
        t[n] = i,
        n++;
    return t.sort()
};
var Cu = function(e) {
    var t = Ou(e)
      , n = "";
    for (var i in t) {
        var r = ku(e[t[i]]);
        null != r && "" != r.toString() && (n += t[i] + "=" + r + "&")
    }
    return n
};
var Su = function(e, t, time) {
    var n = t + e + time;
    return n = do_md5(n)
};
function main() {
    var sign = (param = data,
                time = f,
                t = Cu(param),
                Su("ghaepVf6IhcHmgnk4NCTXLApxQkBcvh1", Su("mwMlWOdyM7OXbjzQPulT1ndRZIAjShDB", Su("ZuSj0gwgsKXP4fTEz55oAG2q2p1SVGKK", t, time), time), time));
    return {'Sign': sign, 'Timestamp': f,}
};

// console.log(main());

执行结果截图:
image

标签:function,return,data,json,爬取,建设,time,var,数据
From: https://www.cnblogs.com/zczhaod/p/18134509

相关文章

  • Java调用第三方接口获取数据并存储,思路加代码
    思路:1.根据第三方接口返回的字段来创建实体类,用来接收数据2.建立连接,提供两种方式。来获取数据3.实体类转换并存储方法一:URL建立连接进行接收数据依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifa......
  • 数据结构:时间复杂度
    时间复杂度:表示算法执行所需的大致时间,记作O(N)。一、当执行次数为常量时记作O(1)。二、执行次数只保留最高阶项例:已知时间复杂度的函数式为F(N)=N^2+2N+10,N无穷大时,2N和10对函数影响的无穷小,可以忽略不计,因此只取N^2为执行次数记作O(N^2)。三、如果最高阶存在且不为1,则......
  • day 06-2 数据类型(列表)
    1.3公共功能1.相加,两个列表相加获取一个新的列表data=["张译","冯绍峰"]+["赵又廷","林更新"]print(data)#['张译','冯绍峰','赵又廷','林更新']v1=["赵又廷","林更新"]v2=["张译","冯......
  • day 06-3 数据类型(列表)
    1.6阶段作业1.写代码,有如下列表,按照要求实现每一个功能li=["linzai",'asff','wftthyy','kihfng',"张三四"]#计算列表的长度并输出data=len(li)#print(len(li))print(data)#5#列表中追加元素"seven"#列表中追加元素"seven",并输出添......
  • 喜马拉雅节目爬取
    1.python部分:喜马拉雅.py#-*-coding:utf-8-*-#@Time:2024/4/149:47#@Author:快乐的小猴子#@Version:#@Function:爬取喜马拉雅节目数据importrequestsimportsubprocessfromfunctoolsimportpartial#专门用来固定参数的subprocess.Popen=parti......
  • PowerDesigner 业务流程/数据建模软件和元数据管理解决方案
    拓展阅读数据库设计工具-08-概览数据库设计工具-08-powerdesigner数据库设计工具-09-mysqlworkbench数据库设计工具-10-dbdesign数据库设计工具-11-dbeaver数据库设计工具-12-pgmodeler数据库设计工具-13-erdplus数据库设计工具-14-NavicatDataModeler数据库设计工具-......
  • InfluxDB时序数据库图形用户界面可视化工具(influxdb-gui)
    说明之前开发了一款TDengine的GUI程序,出于兴趣,简单搞个InfluxDB的复制版,类似Navicat,目前基础操作功能已满足,后续看情况,可以继续扩展功能。介绍InfluxDB-GUI是一款功能全面、操作简便的influxdb时序数据库图形界面工具,V1.0.0目前支持influxdb版本列表如下:influxdb1.8.10版本......
  • Magnet DVR Examiner 3.12.0 (Windows) - 从监控系统 CCTV 和监控 DVR 恢复视频和元数
    MagnetDVRExaminer3.12.0(Windows)-从监控系统CCTV和监控DVR恢复视频和元数据DigitalForensicSoftware|DVR和CCTV恢复解决方案请访问原文链接:https://sysin.org/blog/magnet-dvr-examiner/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgMagnetDV......
  • 万字长文深入理解Docker镜像分层原理、容器数据卷、网络通信架构(Docker系列第2章,共3章
    镜像分层的简单直观体现在执行dockerpull时,会发现多个Pullcomplete字样,就能体现分层,如果是一个文件,只会有一个Pullcomplete。dockerpullredisUsingdefaulttag:latestlatest:Pullingfromlibrary/redisa2abf6c4d29d:Alreadyexistsc7a4e4382001:Pullcomplete......
  • 4-WIFI&蓝牙(ESP32)转CAN或RS485总线&串口TTL模块-CSDK-设备作为TCP客户端,实现上位机
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节设备作为TCP客户端,连接上位......