如何从 Digi-Key 自动检索零件信息

电器工程 成分 炸弹
2022-01-07 21:56:21

如何在给定 Digi-Key 部件号的情况下自动检索制造商、制造商部件号、描述等信息。也许将 GET http 响应解析为:

http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DK_PART_NUMBER

(感谢angeree提供正确的参数)

其中 DK_PART_NUMBER 是 Digikey 部件号。

有谁知道他们是否有网络服务或只是为此提供更好的界面?


在问了这个问题之后,我决定继续写一些从 Digikey 获取一些基本信息的东西:

dk_pn = '587-1962-1-ND'

from urllib import urlopen
from sgmllib import SGMLParser

headers = ['Digi-Key Part Number',
           'Manufacturer',
           'Manufacturer Part Number',
           'Description',
           'Lead Free Status / RoHS Status',
           'Operating Temperature',
           'Standard Package',
           'Price Break',
           'Unit Price',
           'Extended Price']

class DK_Parser(SGMLParser):
    def reset(self):

        SGMLParser.reset(self)

        self.last_td = ''
        self.inside_th = False
        self.inside_td = False
        self.grab_data = False
        self.part_info = {}
        self.hdr_index = 0
        self.row_hdrs = []

    def start_tr(self, attrs): # row
        self.first_header_in_row = True

    def start_th(self, attrs): # header cell
        if self.first_header_in_row:
            self.first_header_in_row = False
            self.row_hdrs = []
            self.hdr_index = 0
        self.inside_th = True

    def end_th(self):
        self.inside_th = False

    def start_td(self, attrs): # data cell
        self.inside_td = True

    def end_td(self): 
        self.inside_td = False
        self.hdr_index = self.hdr_index+1

    def handle_data(self,text):
        text = text.strip()
        if self.inside_th:
            if text in headers:
                self.row_hdrs.append(text)
                self.last_td = ''
                self.grab_data = True
            else:
                self.grab_data = False
        elif self.inside_td and self.grab_data:
            if self.hdr_index:
                self.last_td = ''
            if self.hdr_index < len(self.row_hdrs):
                self.last_td = self.last_td + text
                self.part_info[self.row_hdrs[self.hdr_index]] = self.last_td

dk_url = 'http://search.digikey.com/scripts/DkSearch/dksus.dll'
dk_params = '?Detail&name='

sock = urlopen(dk_url + dk_params + dk_pn)

parser = DK_Parser()
parser.feed(sock.read())
sock.close()
parser.close()

for k,v in parser.part_info.items():
    print k,":",v

仅捕获[价格中断/单价/扩展价格]表的第一条数据行。

4个回答

您想使用详细信息选项而不是关键字。像这样:

http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=458-1003-ND

这将返回一个 HTML 页面,该页面是可以解析的文本。它全部采用表格格式,因此您可以创建您感兴趣的术语列表并解析出值。我可以看到一个零件列表脚本,其中包含零件列表和您要检索的值(即电压、最大电流,或者 Digikey 列出的任何值),然后使用 Python 读取零件编号,抓取页面,解析信息并将其粘贴到 CSV、数据库或 HTML 文件中。我一直在考虑类似的事情,这似乎并不难。好吧,无论如何都很难阻止我现在把它拿出来:)

也许你可以通过Octopart 的 API来实现?

当前最佳答案是https://services.digikey.com/ ,因为Digi-Key 搜索网络服务 (SWS) 和订购网络服务 (OWS) 为客户提供对 Digi-Key 庞大产品数据库和订购的实时访问系统。'。

你正在做的是“屏幕抓取”,随着 DigiKey 更新他们的网站,它很容易被破坏。

这是 python、ruby 和 JS 中的示例代码,用于使用 Octopart 的 API 执行此操作

http://octopart.com/api/docs/v3/overview#bom-matching

您可以在应用程序级别过滤掉 Digikey。