Source code for armatis.parsers.epost

# -*- coding: utf-8 -*-

from armatis.models import Track, Parcel
from armatis.parser import Parser, ParserRequest


[docs]class EPostParser(Parser): def __init__(self, invoice_number, config): super(EPostParser, self).__init__(invoice_number, config) parser_request = ParserRequest(method='POST', header={'Content-Type': 'application/x-www-form-urlencoded'}, url='https://service.epost.go.kr/' 'trace.RetrieveDomRigiTraceList.comm', body=('sid1=%s' % self.invoice_number).encode('utf-8')) self.add_request(parser_request)
[docs] def parse(self, parser): basic_table = parser.find_all('table', {'class': 'table_col'})[0] tds = basic_table.find_all('td') sender = tds[0] receiver = tds[1] note = tds[2] parcel = Parcel() parcel.sender = sender parcel.receiver = receiver parcel.note = note self.parcel = parcel track_table = parser.find_all('table', {'class': 'table_col'})[1] trs = track_table.find_all('tr') for tr in trs: tds = tr.find_all('td') if len(tds) > 0: time = '%s %s' % (getattr(tds[0], 'string', ''), getattr(tds[1], 'string', '')) location = getattr(tds[2], 'string', '') status = getattr(tds[3], 'string', '') track = Track() track.time = time track.location = location track.status = status self.add_track(track)