1 概述

1.1 版本

服务器版本
v7.2.0及之后版本

1.2 功能简介

【Python输入】是指使用Python脚本获取的爬虫数据、静态数据、其他数据库数据,作为后续环节的数据来源。

1.3 业务场景

电商用户评论数据采集与整合:
在电商行业,可通过Python爬取商品评论数据,再利用Pandas库进行数据清洗和结构化处理(如去除重复值、填充缺失值),最终将处理后的数据存入数据中台的用户反馈数据库,为后续的舆情分析、商品优化等环节提供数据支持。

2 功能说明

Python输入配置,主要包括:代码和数据预览。

步骤 描述
步骤一:代码配置 在代码编辑框中输入Python代码。
步骤二:数据预览 查看获取的数据数据。

2.1 代码

直接在代码编辑框中输入Python代码,支持引用自定义变量和任务参数,如下图:

比如:从网站中获取中小企业的采购意向数据。
具体代码如下:

import time
import urllib.parse
import requests 
import json
import urllib
import pandas as pd

# 通过POST接口,从浙江政府采购网-中小企业采购清单页面获得每页的详细采购意向记录
# input: i, int: 采购意向页面值,默认每页100条采购意向记录,可以通过"pageSize"字段设置
#        url, string: POST接口地址  
# output: string, POST接口的返回值
def askurl(i, url):  
    # 请求负载信息
    now = int(time.time() / 1000) * 1000
    request_payload = {
        "categoryCode": "110-232730",
        "excludeDistrictPrefix": "90",
        "isGov": "true",
        "keyword": "采购意向",
        "pageNo": i,
        "pageSize": 100,
        "_t": now 
    }

    #请求头信息
    head = {
        "Content-Type": "application/json;charset=UTF-8",
        "Host": "zfcg.czt.zj.gov.cn",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
    }

    #headers里表示这里的数据获取是post方法,所以使用requests.post函数
    response = requests.post(url, headers=head, data=json.dumps(request_payload))
    return response.text

# 通过POST接口,获取采购意向的articleId List
# input:url, string: POST接口地址
# output: list of string, 各采购意向articleId的汇总列表
def getlist(url):
    proIntentList = []

    # range(a, b): 爬取页面设置,前闭后开,a > 0
    for z in range(1, 2):  
        page = askurl(z, url) 
        jsonStr = json.loads(page)

        for one in jsonStr['result']['data']['data']:
            articleId = urllib.parse.quote(one['articleId'])
            articleId = articleId.replace("/", "%2F")
            proIntentList.append(articleId)

    return proIntentList

# 通过采购意向的articleId获得各采购意向的详细信息
# input: articleIdList: list of string, 各采购意向articleId的汇总列表
# output: DataFrame, 各采购意向详细情况汇总,一行为一个采购意向
# Note: 空值可能同时以'/'和'NAN'两种形态存在
def getDetailProIntent(articleIdList):
    proIntentList = pd.DataFrame()

    for articleId in articleIdList:
        url = "https://zfcg.czt.zj.gov.cn/portal/detail?articleId=" + articleId + "&timestamp=" + str(int(time.time()))
        # DataFrame.concat 要求pandas2.x 版本
        # concat(flavor = ) 可以为'lxml', 'html5lib', 'bs4' 并要求安装对应包
        # 其中 'lxml'需同时设置encoding = 'gbk',后两者不用设置
        proIntentList = pd.concat([proIntentList, pd.read_html(url, flavor="html5lib", index_col=0)[0]], ignore_index=True, axis=1)

    proIntentList = proIntentList.T
    # print(proIntentList)
    return proIntentList

def main():
    articleIdList = getlist("https://zfcg.czt.zj.gov.cn/portal/category")
    data = getDetailProIntent(articleIdList)
    # return data

if __name__ == '__main__':
    main()

注:默认使用“Python”类型命令,暂不支持用户选择。

2.2 数据预览

当Python代码配置正常时,点击“数据预览”将显示 Python 输入节点获取的数据数据。如下图:

作者:fancy  创建时间:2024-08-26 15:45
最后编辑:倪  更新时间:2025-03-27 15:47