Jak automatycznie pobierać, biorąc pod uwagę numer części Digi-Key, informacje, takie jak producent, numer części producenta, opis itp. Być może parsowanie GET http odpowiada:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DK_PART_NUMBER
(dzięki wściekłości za prawidłowe parametry)
Gdzie DK_PART_NUMBER jest numerem części Digikey.
Czy ktoś wie, czy ma usługę internetową, czy po prostu lepszy interfejs?
Po zadaniu tego pytania postanowiłem napisać coś, co wykonało podstawowe pobieranie z 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
Przechwytywany jest tylko pierwszy wiersz danych w tabeli [podział ceny / cena jednostkowa / cena rozszerzona].
components
bom
apalopohapa
źródło
źródło
Odpowiedzi:
Chcesz użyć opcji szczegółowej zamiast słowa kluczowego. Lubię to:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=458-1003-ND
Zwraca stronę HTML, która jest tekstem, który można przeanalizować. Wszystko jest w formacie tabeli, dzięki czemu możesz utworzyć listę terminów, które Cię interesują, i przeanalizować wartości. Widzę skrypt listy części, który pobiera listę części i wartości, które chcesz odzyskać (tj. Napięcie, maksymalny prąd, lub jak Digikey je wymienia), a następnie sprawia, że Python odczytuje numer części, chwyta stronę, przeanalizuj informacje i umieść je w pliku CSV, bazie danych lub pliku HTML. Myślałem o czymś podobnym i nie wydaje się to zbyt trudne. Cóż, wystarczająco mocno, żeby powstrzymać mnie przed wyciągnięciem tego teraz :)
źródło
Być może mógłbyś to zrobić poprzez API Octopart ?
źródło
Obecna najlepsza odpowiedź to https://services.digikey.com/, ponieważ „ usługa wyszukiwania Digi-Key (SWS) i usługa zamawiania (OWS) zapewniają klientom dostęp w czasie rzeczywistym do ogromnej bazy danych produktów Digi-Key i zamawiania system. „.
To, co robisz, to „zgarnianie ekranu”, które jest podatne na uszkodzenie podczas aktualizacji witryny przez DigiKey.
źródło
Oto przykładowy kod w Pythonie, Ruby i JS, aby to zrobić za pomocą API Octopart
http://octopart.com/api/docs/v3/overview#bom-matching
Możesz odfiltrować Digikey na poziomie aplikacji.
źródło
Jeśli zachowasz BOM jako arkusz kalkulacyjny MS Excel, możesz wyciągnąć ceny bezpośrednio do arkusza roboczego poprzez Dane-> Pobierz dane zewnętrzne-> Z sieci. Korzystam z programu Excel 2010. Oto makro, które utworzyłem za pomocą rejestratora makr.
źródło