Как автоматически получить, учитывая номер детали Digi-Key, такую информацию, как «Производитель», «Номер детали производителя», «Описание» и т. Д. Возможно, при разборе GET http используется:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DK_PART_NUMBER
(спасибо angryee за правильные параметры)
Где 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
Захвачена только первая строка данных таблицы [ценовой разрыв / цена за единицу / расширенная цена].
components
bom
apalopohapa
источник
источник
Ответы:
Вы хотите использовать опцию детализации вместо ключевого слова. Как это:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=458-1003-ND
Это возвращает HTML-страницу, которая является текстом, который может быть проанализирован. Это все в табличном формате, так что вы можете создать список терминов, которые вас интересуют, и проанализировать значения. Я могу увидеть скрипт списка деталей, который принимает список деталей и значения, которые вы хотите получить (например, напряжение, максимальный ток, или, тем не менее, Digikey перечисляет его), а затем заставить Python прочитать номер детали, захватить страницу, разобрать информацию и вставить ее в CSV, базу данных или файл HTML. Я думал о чем-то подобном, и это не кажется слишком сложным. Ну, достаточно сильно, чтобы помешать мне все равно вытянуть прямо сейчас :)
источник
Возможно, вы могли бы сделать это через API Octopart ?
источник
Текущий лучший ответ - https://services.digikey.com/, поскольку « Веб-служба поиска Digi-Key (SWS) и веб-служба заказа (OWS) предоставляют клиентам доступ в реальном времени к обширной базе данных продуктов Digi-Key и заказам. система. ».
То, что вы делаете, это «очистка экрана», которая уязвима для взлома, когда DigiKey обновляет свой сайт.
источник
Вот пример кода на python, ruby и JS, чтобы сделать это с помощью API Octopart
http://octopart.com/api/docs/v3/overview#bom-matching
Вы можете отфильтровать для Digikey на уровне приложения.
источник
Если вы сохраните свою спецификацию в виде электронной таблицы MS Excel, вы можете перетащить цены непосредственно в рабочую таблицу через Данные-> Получить внешние данные-> Из Интернета. Я использую Excel 2010. Вот макрос, который я сделал с помощью устройства записи макросов.
источник