×

化工网(cnchemnet)关键词检索供应商数据实战方案

Ace Ace 发表于2026-11-02 16:03:20 浏览4 评论0

抢沙发发表评论

前言

化工 B2B 场景和普通电商不一样,检索结果混杂推广商家、普通供应商、过期供应信息,直接拉取原始数据很难用于采购筛选。本文的思路不只是简单请求拿数据,而是增加供应商类型标记、过期供应过滤、字段归一化,适配化工行业采购商批量摸排供应商的业务需求,适合做供应链台账、供应商初选场景。

环境准备

依赖 requests 与 json,执行安装:

pip install requests

点击获取key和secret

核心代码示例

import requests
import time

class ChemnetSupplierSearch:
    def __init__(self):
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
            "Accept": "application/json, text/plain, */*"
        }
        self.timeout = 10
        self.max_retry = 2

    def search_supplier(self, keyword, page=1):
        params = {
            "keyword": keyword,
            "page": page,
            "size": 20
        }
        for i in range(self.max_retry):
            try:
                res = requests.get(
                    "https://cn.chemnet.com/search/supplier",
                    headers=self.headers,
                    params=params,
                    timeout=self.timeout
                )
                res.raise_for_status()
                raw_data = res.json()
                return self.data_filter(raw_data)
            except Exception as e:
                time.sleep(1.5)
                continue
        return []

    def data_filter(self, raw):
        result_list = []
        for item in raw.get("list", []):
            # 过滤过期供应、竞价推广数据
            if item.get("is_expire") or item.get("is_ad") == 1:
                continue
            info = {
                "company_name": item.get("company_name"),
                "main_product": item.get("main_product"),
                "contact": item.get("contact"),
                "region": item.get("area"),
                "supply_id": item.get("id"),
                "update_time": item.get("update_time")
            }
            result_list.append(info)
        return result_list

if __name__ == "__main__":
    search_client = ChemnetSupplierSearch()
    data = search_client.search_supplier("二甲基亚砜", page=1)
    for row in data:
        print(row)

方案解读

这段封装重点做了三层处理:重试容错、业务过滤、字段扁平化。化工网供应商检索返回字段杂乱,同时混有付费推广条目,这类数据对采购参考价值低,所以增加is_ad、过期状态过滤逻辑,减少下游数据清洗工作量。 不同于电商商品检索,化工供应商核心关注主营产品、所在地、更新时间,代码里只保留业务刚需字段,避免冗余数据占用存储。分页逻辑可循环调用,循环时建议加长间隔,避免访问频次过高。

落地避坑要点

  1. 关键词支持化学品名、CAS 号两种检索方式,CAS 检索精度更高,供应商匹配更精准;

  2. 该站点有访问频次限制,批量轮询分页时,间隔建议大于 1.5 秒;

  3. 部分企业隐藏联系方式,返回 contact 字段为空,业务侧需要做空值兼容;

  4. 检索结果的更新时间代表供应信息发布时间,优先选取近期更新的供应商,减少无效线索。

总结

这套方案偏向化工供应链业务使用,优先保证有效供应商线索,而不是全量原始数据。对于需要定期摸排原料供应商、批量做市场比价台账的场景,可在此基础上增加导出 csv、地区筛选功能,适配采购部门自动化线索收集需求。

群贤毕至

访客