构建面向电子行业的垂直信息采集系统:Digikey元器件搜索实战

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文介绍了一个面向电子行业的自动化信息采集系统,以Digikey平台为例,实现从关键词搜索、代理请求、页面解析到数据存储的全流程抓取。系统采用模块化设计,支持定时采集与数据归档,助力企业提升采购决策效率与数据化水平。

爬虫代理

前言:采购决策背后的数据支撑

在硬件开发、工业控制、科研工程等多个领域,电子元器件的选型和采购过程日趋复杂。工程技术人员需要依据参数精确比对型号,采购方则关注供货周期与供货稳定性。然而,手动逐一在各平台检索信息,不仅耗时,也存在数据碎片化问题。

为提升效率与可视性,构建一个针对电子行业的自动采集系统,从主流分销平台中提取关键参数,已成为众多企业推动采购流程数字化的方向之一。本文将以 Digikey 平台为例,介绍一个模块化、可扩展的信息抓取方案,涵盖搜索、结构提取、代理配置与数据归档等环节。


系统结构拆解

我们设计的整体架构由五个主要组件构成,各司其职、互相解耦:

关键词输入
   ↓
请求构建器(配置IP代理、用户信息、浏览器标识)
   ↓
页面解析器(提取产品字段)
   ↓
数据存储器(保存至数据库)
   ↓
定时调度器(每日增量采集)

模块功能说明

请求构建器

  • 构造搜索URL
  • 接入代理IP服务(示例中使用亿牛云代理)
  • 配置用户与浏览器伪装头

页面解析器

  • 解析搜索结果页面HTML结构
  • 获取字段:产品编号、制造商、制造商产品编号、描述、原厂交货周期等
  • 支持翻页与冗余信息去重

数据存储器

  • 将数据写入本地数据库(如 SQLite)
  • 记录抓取时间、搜索关键词
  • 为后续比对与趋势分析提供支撑

定时调度器

  • 通过定时任务框架实现周期运行
  • 可每日自动执行更新流程

实现示例

下面是简化版实现代码,用于演示如何结合代理、请求头伪装及HTML结构解析,完成核心数据提取并归档入库。

import requests
from bs4 import BeautifulSoup
import sqlite3
import time
from datetime import datetime

# 代理与请求头配置(参考亿牛云示例)
proxies = {
   
    "http": "http://16YUN:16IP@proxy.16yun.cn:3100",
    "https": "http://16YUN:16IP@proxy.16yun.cn:3100"
}
headers = {
   
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/122.0",
    "Cookie": "your_cookie_if_needed=abc123;"
}

# 初始化数据库结构
def init_db():
    conn = sqlite3.connect("digikey_products.db")
    c = conn.cursor()
    c.execute("""
        CREATE TABLE IF NOT EXISTS products (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            crawl_time TEXT,
            keyword TEXT,
            product_number TEXT,
            manufacturer TEXT,
            mfr_product_number TEXT,
            description TEXT,
            lead_time TEXT
        )
    """)
    conn.commit()
    conn.close()

# 抓取函数:根据关键词爬取页面并提取字段
def scrape_products(keyword):
    print(f"正在采集关键词: {keyword}")
    url = f"https://www.digikey.cn/zh/products/result?s=N&keywords={keyword}"

    try:
        response = requests.get(url, headers=headers, proxies=proxies, timeout=10)
        response.raise_for_status()
    except Exception as e:
        print(f"请求失败: {e}")
        return

    soup = BeautifulSoup(response.text, "html.parser")
    table = soup.find("table", class_="product-table")
    if not table:
        print("未获取到产品表格结构")
        return

    rows = table.find_all("tr", class_="product-table-row")
    crawl_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    conn = sqlite3.connect("digikey_products.db")
    c = conn.cursor()

    for row in rows:
        cols = row.find_all("td")
        if len(cols) < 6:
            continue
        try:
            product_number = cols[0].get_text(strip=True)
            manufacturer = cols[1].get_text(strip=True)
            mfr_product_number = cols[2].get_text(strip=True)
            description = cols[3].get_text(strip=True)
            lead_time = cols[4].get_text(strip=True)

            c.execute("""
                INSERT INTO products (
                    crawl_time, keyword, product_number, manufacturer,
                    mfr_product_number, description, lead_time
                ) VALUES (?, ?, ?, ?, ?, ?, ?)
            """, (
                crawl_time, keyword, product_number, manufacturer,
                mfr_product_number, description, lead_time
            ))
        except Exception as e:
            print(f"数据入库失败: {e}")

    conn.commit()
    conn.close()
    print(f"关键词'{keyword}'采集完毕。")

# 主流程入口
if __name__ == "__main__":
    init_db()
    keywords = ["STM32", "贴片电阻", "电容", "连接器"]
    for kw in keywords:
        scrape_products(kw)
        time.sleep(5)  # 避免访问频率过高被封锁

信息采集流程图

输入关键词或型号
      ↓
发起网页请求(带代理、伪装头)
      ↓
获取HTML响应 → 定位结果表格
      ↓
提取产品字段并写入数据库
      ↓
支持周期性采集与增量更新

相关文章
|
3月前
|
存储 人工智能 文字识别
医疗病历结构化处理系统技术白皮书——基于多模态AI的医联体数据治理方案
本系统基于双端协同架构,集成移动端OCR识别与云端数据分析,实现医疗文档高效结构化处理。采用PaddleOCR轻量引擎与隐私计算技术,支持离线识别与敏感信息脱敏。后端构建分布式数据仓库与多租户机制,满足PB级存储与数据安全合规要求。实测OCR准确率达96.2%(印刷体)与88.7%(手写体),字段抽取F1值92.4%,显著提升病历处理效率与质量。
345 3
|
缓存 资源调度 JavaScript
nodejs全局(npm、cnpm、yarn)及缓存基本配置,一篇就搞定
nodejs全局(npm、cnpm、yarn)及缓存基本配置,一篇就搞定
|
6月前
|
安全 缓存 容器
2025 年 WordPress 主机托管深度测评
本测评针对全球23家主流主机商,基于120天实时监测与300+技术指标,筛选出5家优秀WordPress托管方案。从基础性能(响应时间、加载速度等)、技术适配(容器化支持、缓存机制等)、服务保障(技术支持、安全防护等)到性价比模型,全方位评估。推荐方案涵盖性能优先型(CloudPress Pro)、成本敏感型(BlueHost Premium)、技术开发型(SiteGround GoGeek)等,满足不同需求。报告还洞察行业趋势,如容器化普及、Serverless探索及AI驱动优化,为用户选型提供科学依据。测评数据来自2025年1-3月实测,保持中立客观立场。
212 0
2025 年 WordPress 主机托管深度测评
|
11月前
|
项目管理
推荐5款好用靠谱的工时管理工具
在快节奏的工作环境中,精准的工时记录与高效的项目管理至关重要。本文推荐五款工时管理软件:Trello界面简洁但功能较简单;Worktile功能丰富但操作复杂;Clockify专注工时追踪与报告生成;Asana功能全面但价格昂贵;板栗看板简洁高效,易于上手,特别适合预算有限的团队。选择合适的工具,提升团队效率。
|
12月前
|
存储 Unix Linux
NFS 的主要特点
【10月更文挑战第13天】
274 2
|
开发框架 前端开发 Swift
【Swift开发专栏】Swift与跨平台应用开发
【4月更文挑战第30天】Swift 在跨平台开发中优缺点并存,其代码复用性、高性能和易于集成是亮点,但生态系统限制和高学习成本是挑战。开发者可借助 SwiftUI、Combine 等工具,配合React Native、Flutter、Xamarin等框架实现跨平台。Swift 不是独立的跨平台框架,但能与其他框架结合使用,适用于不同项目需求。
461 0
|
机器学习/深度学习 数据采集 人工智能
使用机器学习进行用户行为预测的技术探索
【8月更文挑战第9天】使用机器学习进行用户行为预测是一项复杂而充满挑战的任务。它要求开发者具备扎实的机器学习基础、丰富的数据处理经验和深入的业务理解。通过不断的数据收集、处理、特征工程、模型训练和优化,可以构建出高效、准确的用户行为预测模型,为企业决策提供有力支持。未来,随着技术的不断发展和数据的不断积累,用户行为预测领域将迎来更加广阔的发展前景。
|
索引
利用滚动索引来管理海量Elasticsearch数据
利用滚动索引来管理海量Elasticsearch数据
301 3
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
352 0
|
NoSQL Go 开发工具
Go 语言开发工具Eclipse
Go 语言开发工具Eclipse
169 0