Source code for armatis.parsers.ems
# -*- coding: utf-8 -*-
from armatis.models import Track, Parcel
from armatis.parser import Parser, ParserRequest
[docs]class EMSParser(Parser):
def __init__(self, invoice_number, config):
super(EMSParser, self).__init__(invoice_number, config)
parser_request = ParserRequest(url='https://service.epost.go.kr/trace.RetrieveEmsRigiTraceList.comm?' \
'POST_CODE=%s&displayHeader=N' % self.invoice_number)
self.add_request(parser_request)
[docs] def parse(self, parser):
table = parser.find('table', {'class': 'table_col ma_b_5'})
cols = table.find('thead').find('tr').find_all('th')
rows = table.find('tbody').find_all('tr')
self.parcel = Parcel()
for row in rows:
tds = row.find_all('td')
time = getattr(tds[0].find('br'), 'next_sibling', '') or \
getattr(tds[1].find('br'), 'next_sibling', '')
status = getattr(tds[2], 'string', '')
track = Track()
track.status = status
track.time = time
self.add_track(track)