SRT에서 역 조회를 자동으로 해온것과 비슷하게, KTX역도 자동으로 불러오게 만들자.
기차표 조회창에서 역 변경을 누르면 기차역 리스트 팝업을 확인할 수 있다.
여기서 분홍표시된 역들이 KTX 정차역이다. 우리는 KTX가 아닌 일반 열차에는 관심이 없으므로, 이 역들만 뽑아내자.
소스코드를 보면 예쁘게도 KTX 정차역이 분리되어 나온다. class가 bg03이거나 title이 'KTX 정차역'인 리스트를 뽑으면 된다.
title이 'KTX 정차역'인 리스트를 뽑으려 했는데.. 청량리역이 안잡혀서 클래스로 잡는다...(개발 상태가..)
def fetch_stations(self):
result = dict()
try:
res = self.session.get("https://www.letskorail.com/ebizprd/EbizPrdTicketPr11100/searchTnCode.do")
except Exception as e:
self.error_callback('KTX 역 조회 실패', f"HTTP 요청에 실패했습니다 - \n{e}")
return result
# print(res.text)
try:
soup = BeautifulSoup(res.text, 'html.parser')
stations = soup.find_all("td", {"class": re.compile(r'bg03')})
for station in stations:
station = station.find("a")
station_split = station['href'].split("'")
result[station_split[1]] = station_split[3]
except Exception as e:
self.error_callback('KTX 역 조회 실패', f"파싱에 실패했습니다 - \n{e}")
return result
result를 출력해보면 아래와 같이 잘 잡힌당
{'서울': '0001', '용산': '0104', '영등포': '0002', '광명': '0501', '수원': '0003', '천안아산': '0502', '오송': '0297', '대전': '0010', '서대전': '0025', '김천구미': '0507', '동대구': '0015', '포항': '0515', '밀양': '0017', '구포': '0019', '부산': '0020', '경주(신경주)': '0508', '울산(통도사)': '0509', '마산': '0059', '창원중앙': '0512', '경산': '0024', '논산': '0027', '익산': '0030', '정읍': '0033', '광주송정': '0036', '목포': '0041', '전주': '0045', '순천': '0051', '여수EXPO': '0053', '청량리': '0090', '강릉': '0115', '행신': '0390', '정동진': '0262'}
풀 코드는 깃허브로..!
'프로젝트 > SRT&KTX 매진표 예매' 카테고리의 다른 글
SRT&KTX 기차표 매크로 예매 - (11) KTX 승차권 예매 (1) | 2024.01.16 |
---|---|
SRT&KTX 기차표 매크로 예매 - (10) KTX 승차권 조회 (0) | 2024.01.15 |
SRT&KTX 기차표 매크로 예매 - (8) KTX 로그인 (0) | 2024.01.15 |
SRT&KTX 기차표 매크로 예매 - (7) 실행파일 만들기 (PyInstaller) (0) | 2024.01.12 |
SRT&KTX 기차표 매크로 예매 - (6) 아이디/비밀번호 저장하기 (0) | 2024.01.12 |