Cách tự động truy xuất, được cung cấp số phần Digi-Key, thông tin, chẳng hạn như Nhà sản xuất, Số Phần của Nhà sản xuất, Mô tả, v.v. Có lẽ phân tích cú pháp GET http theo:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DK_PART_NUMBER
(cảm ơn tức giận vì các thông số chính xác)
Trong đó DK_PART_NUMBER là số phần của Digikey.
Có ai biết nếu họ có một dịch vụ web hoặc đơn giản là một giao diện tốt hơn cho việc này?
Sau khi hỏi câu hỏi này, tôi quyết định tiếp tục và viết một cái gì đó đã tìm nạp cơ bản từ 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
Chỉ có dòng dữ liệu đầu tiên của bảng [phá giá / đơn giá / giá mở rộng] được ghi lại.