정말 눈물나게 어려운 3개월(9월~) 이었습니다..

취준 정말 힘드네요

졸업학기가 15학점이라 학교 수업들으면서, 가끔 수업 빠지면서 취준하는게 참 .... ;;

 

11월 초 까지만 해도 "아 정말 망했다..답없다.. 내년인가?" 싶었는데 그래도 계속 찔러보니 성과가 하나씩 나오긴하네요!!

 

이 글을 보시는 분들은 취준 현황이 어떻게 되시는지 궁금합니다 특히 컴공!!

 

저는 현재 중견기업1 최종합격 한 상태이고 나머지 기업들 결과를 기다리고있습니다.

아직까지 많은 기업들 채용공고가 올라오는데.. (한화, LG, 그 외 금융권 등등)

중견1에 합격해서 이제 더이상 서류는 안쓸 생각입니다....

 

12월 8일 기준으로 저의 취준 현황을 남깁니다!!

 

최종합격: 경동나비엔 R&D 

 

최종합격 결과 대기: 한솔인티큐브(디지털 컨텍트 센터 기술 개발), 코오롱인더스트리(IT기획)

 

최종 면접 앞둔 기업: 한화정밀기계(SW개발)

 

전형 포기한 기업: 이수시스템(HR시스템 개발), 세아상역(IT 개발), 삼성선물(전산), 원익피앤이(공정SW설계)

 

위에 작성한 기업들 모두 10월까지만 해도 생각도 못해봤던(좋은 뜻) 기업들인데 저 list 중에서 제 인생이 결정됐네요~~

그래도 한 군데 합격하니까 마음이 편안해집니다.

 

모두 화이팅입니다!

'취준&이직' 카테고리의 다른 글

기업 면접 질문 &답변  (12) 2022.03.03
취준 끝  (8) 2021.12.11
서류는 합격했지만 면접 포기한 기업 list  (0) 2021.11.30
취준현황 !!(11/17 기준..)  (2) 2021.11.17
보유 스펙(너무 부족하다 ㅠㅠ)  (2) 2021.11.09

 

취준..... 너무싫다

요즘 기업들이 너무 사람 안뽑는게 느껴지네요.. 

그럼에도 많은 기업이 서류를 통과시켜줬는데 제 직무랑 너무 달라서 면접을 포기한 기업 리스트를 작성해봅니다..

 

1. 이수시스템: HR시스템 개발

-> 일부 파견직 & HR개발이 나와 적성이 맞는지 의문이 듬..

2. 원익PNE: 2차전지, 충방전 설비

-> 출퇴근 1시간 30~40분소요(+교통비 ..), 주 계열사 대비 낮은 연봉

3. 세아상역: 신규 IT프로젝트, ERP관리

-> 한화 정밀기계와 면접 시간 겹침..(ㅠㅠ), 계약연봉이4800이어서 꼭 가고싶었지만 한화에 투자

4. 삼성선물: 금융, 선물관리 전산시스템

-> 애초에 기대를 안함, 근데 서류가 붙음.. 정보도 없고 티오도 적은듯, 10일에 GSAT인데 서류 합격받고 열흘 남짓 남음,

금융, 선물에 관한 지식 없음

 

 

'취준&이직' 카테고리의 다른 글

취준 끝  (8) 2021.12.11
취준 현황 (12.8 기준)  (4) 2021.12.08
취준현황 !!(11/17 기준..)  (2) 2021.11.17
보유 스펙(너무 부족하다 ㅠㅠ)  (2) 2021.11.09
취준 현황..(11/16 갱신... 희망을 가집시다 우리)  (5) 2021.11.09

 

 

합격 결과는 어제, 오늘 나왔고 아래 4기업의 면접 날짜 안내는 오늘 받았습니다.!

 

1. 한화 정밀기계: 서류 합격 및 면접 날짜 안내

2. 현대 오토에버: 서류, 코딩테스트 합격 및 면접 날짜 안내

3. 원익 PNE: 서류합격, 1차 면접 날짜 안내

4. 경동나비엔: 서류합격, 1차 면접 합격 및 면접 안내 

 

<어제 발표난 곳>

코오롱 인더스트리: 서류합격, 1차 면접 합격 발표, 2차 날짜 안내 

 

저처럼 부족한 사람도 이렇게 기회를 주시네요 ㅠㅠ 

다들 화이팅입니다 진심으로..

 

 

면접이라도 보게 해주심에 감사!!!!!!!!!!!!!!!!!!!!!!

 

수도권 대학 4년제

(현 한국산업기술대학교, 2022년 3월부로 한국공학대학교로 명칭) 

 

전공: 컴퓨터공학과

부전공: IT경영학과

 

총 학점: 3.72/4.5

이수학점:155

 

교육활동: K-digital training IoT과정 국비 교육 820시간 수료

수상: 교내 I2C경진대회 장려상

어학: 토익스피킹 lev6 130점

자격증: 정보처리기사

 

기타사항>>

 1. 알고리즘문제 약 750개 풀었음(백준+SWEA 등등)

 2. 프로그래밍 지식 + 과제 + 알고리즘문제풀이 기록용 블로그 운영중

 3. 1년 휴학( 개발 언어, 자료구조+알고리즘 공부)

 

 

 

암울 그 자체 ㅠㅠㅠㅠ

 

사기업

코스맥스 -서탈

원익 로보틱스- 접수

코오롱인더스트리- 1차 면접진행중-> 결과대기

한솔인티큐브- AI면접 진행중-> 결과대기

삼성전자- 서류+코테 -> 코테결과 대기중(탈락예상...)

네이버 -> 코테 탈락

NHN -> 코테탈락

SKT-> 코테탈락

KT  -> 서류탈락

LG CNS-> 서류탈락

LG VS본부-> 서류탈락

현대모비스-> 서류탈락

만도-> 서류탈락

경동나비엔-  서류 합격 -> 11/12 1차 면접 대기중

두산로보틱스-> 서류탈락

이랜드 ESI-> 서류탈락

이수시스템-> 서류합격-> 11월중순 면접 대기중

현대 오토에버-> 접수중 

한화정밀기계-> 접수중 

 

------------------11/16 갱신 ( 그래도 위의 처참한 상황보다 나아진 것 같아요!!)

한화정밀기계: 서류합격-> 면접대기중

코오롱인더스트리: 서류합격-> 1차면접합격(기적.....) -> 2차 대기중

이수시스템: 서류합격-> 면접 취소(나랑 안맞아...)

경동나비엔: 서류합격-> 1차면접 결과대기중

원익피앤이: 1지망 로보틱스 떨어지고 2지망 피앤이 붙음.. -> 내일 AI면접+영어회화-> 1차 면접대기(서류합격자 모두 면접)

한솔인티큐브: 서류합격-> AI합격-> 코테(Python밖에 없다고.? ㅈ망) -> 결과대기중( 마음을 놓아버림)

현대 오토에버: 서류합격(현대에서 서합도 시켜주네..) -> 인성+코테-> 결과대기중 ( 제발!!)

 

미라콤 아이앤씨: 접수중

세아상역: 접수중

삼성선물: 접수중

 

 

 

공기업:

<ALL 서류 광탈>

농어촌공사

국가 철도공사

한국전력거래소

한국전력

 

'취준&이직' 카테고리의 다른 글

취준 끝  (8) 2021.12.11
취준 현황 (12.8 기준)  (4) 2021.12.08
서류는 합격했지만 면접 포기한 기업 list  (0) 2021.11.30
취준현황 !!(11/17 기준..)  (2) 2021.11.17
보유 스펙(너무 부족하다 ㅠㅠ)  (2) 2021.11.09

 

저번시간 까지는 웹 크롤링을 활용하여 다양한 정보들을 추출했는데,

이번시간에는 공공데이터API를 활용하여 실시간 버스 도착정보를 얻어보겠습니다.

저는 제가 주로 이용하는 한 버스 정류소의 실시간 버스 도착 정보를 얻기 위해 사용했습니다. 

마을 버스 한 대만 통행하는 일부 정류소는 버스 도착 정보가 잘 조회되지 않는 것 같아서 최소 4대가 통행하는 정류소를 선정했습니다.

 

*누구나 겪을 수 있는 시행착오에 대한 부분도 포함되어 있기 때문에 한번 쭉 읽고나서 따라하실 것을 권장합니다.

 

공공데이터 포털에 접속하여 '서울특별시_버스도착정보조회 서비스'를 신청합니다.

https://www.data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

서비스 신청 후 API키가 발급되는데, 서비스를 바로 이용할 수 있는 것은 아니고 어느정도 시간이 소요된 후 이용할 수 있습니다. 

서비스 종류에 따라 짧게는 1~2시간에서 길게는 하루 넘게 걸리는 서비스도 있다고합니다.

 

서비스가 아직 서버에서 승인되지 않아서 발생하는 오류와 잘못된 데이터를 기입해서 발생되는 오류는 다르기 때문에 이를 헷갈리시면 안됩니다.

간혹, 서비스는 정상적으로이용할 수 있는데 본인이 잘못된 데이터를 입력하여 발생한 오류를 API키의 발급이 느려져서 발생하는 오류라고 오해하시는 분들이 계셨습니다.

 

제가 포스팅 한 글을 참고하시면 좋을 것 같습니다.

https://jow1025.tistory.com/318 

 

공공데이터 api 신청 후 서비스 호출 에러

실시간 도착 버스 정보 조회 API를 신청하고나서 짧게는 1시간 길게는 2일 정도 사용허가를 해준다 그랬는데 신청하고 20분후에 아래 처럼 승인이 나 있었습니다. 되게 빨리 됐다 싶어서 바로 사

jow1025.tistory.com

 

이제 발급받은 키를 활용하여 openAPI를 활용해보겠습니다.

 

 

2,4번은 구현할 서비스에서 딱히 참고할 만 한 게 없고 3번 서비스가 우리가 구현할 목적에 적합하므로 이를 이용합니다.

테스트를 위해 아래 샘플데이터에 자기가 조회할 버스정류장의 ID를 적어주면됩니다. stID는 정류소ID를 의미합니다.

 

정류소 ID를 알아내기위해  버스정보 사이트에서 개발자 도구로 어떤 정보를 얻을 수 있는지 확인해봅니다.

서울버스정보 조회 사이트에 접속하고 조회할 정류소 이름을 검색합니다.

https://bus.go.kr/searchResult6.jsp

 

버스도착정보

 

bus.go.kr

조회하면 오른쪽 지도에 아래처럼 버스 아이콘이 뜨는데,

개발자도구(F12)를 킨 다음 이 아이콘을 클릭하면 개발자도구 상단 Network탭에 아래 3가지 .jsp 목록이 나타납니다.

getStationByUid.jsp를 클릭해보면, 

아래와 같이 특정 버스(6630버스)의 정보를 알 수 있는데, (정류소 고유번호, 노선 이름, 노선ID, 등)  

우리가 공공데이터 API를 사용하여 얻고자 하는 데이터는 아래 목록 중 rtid(노선번호,=버스이름),arrmsg1,arrmsg2(첫번째, 두번째 버스 도착 예정 시간)입니다. 

 

아까 위에서 API활용 3번 째 서비스를 이용하려면 정류소 ID가 필요하다고 했는데 그것까진 출력되지 않는 것 같습니다.

 

 

++++++++++

다른 사이트를 참고해볼까요?

++++++++++++

 

아래 사이트에서 조회하니깐 버스정류장 id를 포함한 더 자세한 정보들까지 출력되는 것 같으니 위 사이트보다  아래 사이트를 이용하시는 것을 강추합니다.

https://topis.seoul.go.kr/map/openBusMap.do

 

버스정보 조회 | 서울시 교통정보 시스템 - TOPIS

 

topis.seoul.go.kr

 

버스 id까지 다 나오는데, 이를 이용하면됩니다. 

------------------------------------------------------------------------------------------------

두번째 버스정보사이트에서는 정류소 ID까지 출력되므로 정류소 id정보를 얻기위한 아래 과정은 생략해도됩니다.

저는 첫번째 버스정보사이트에서 정류소 ID를 못찾았다는 것을 가정하고 진행하겠습니다.

------------------------------------------------------------------------------------------------

 

그럼 어떻게 정류소 ID를 얻을까?

 

다시, 아까 위에서 본 서비스 목록 중 1번을 펼쳐보면 노선번호(busRouteID)를 적어서 기능을 테스트해 볼 수 있음을 확인할 수 있습니다. 

위에서 개발자 도구로 살펴본 정류소 정보를 보면 6630번 버스의 Id가 100100307임을 알 수 있었는데 100100307을 입력하고 미리보기 버튼을 클릭합니다.

그러면 아래처럼  되게 많은 데이터들이 출력됩니다.

서비스 설명에 나와있듯 "경유노선 정류소 도착예정 정보" 가 출력됩니다. 설명이 약간 헷갈릴 수 있는데,

 

방금 입력한 id값 100100307(6630번버스)가 경유하는 모든 버스 정류소와 그 정류소들에 도착할 6630번 버스의 정보가 출력되는 것입니다.

 

마이페이지에서  openAPI상세 페이지를 클릭하여 변수들을 살펴보면,

 

우리가 알아내야할 정류소ID가 stID라는 변수명으로 매칭되어있고, 아까 개발자 도구로 살펴본 버스정보에 나온 변수와똑같거나 비슷한 이름의 변수들이 보입니다. 

 

이제 위의 XML파일에서 ctrl+f로 정류소이름을 검색한 뒤 해당 정류소의 stid를 찾아냅니다.

 이 stid를 3번 서비스에 입력하고 미리보기 버튼을 누르면 

보여지는 xml데이터가 바로 버스 정류장에 도착하는 버스 정보가 되는 것입니다.

 

순서를 정리하자면,

1. 버스정보사이트에서 개발자 도구로 본인이 검색할 정류소를 경유하는 버스의 id 알아내기

2. open API 1번 서비스에 1번에서 알아낸 버스 id를 입력 후 경유하는 모든 정류소 목록 중 본인이 검색하고싶은 버스 정류소 ID를 알아내기

 

* 2-1) 아래 사이트에서 개발자도구로  2번 내용을 쉽게 확인가능

https://topis.seoul.go.kr/map/openBusMap.do

 

버스정보 조회 | 서울시 교통정보 시스템 - TOPIS

 

topis.seoul.go.kr

 

3. 이 id를 이용, open API 3번에 입력하여 정류소를 경유하는 모든 버스의 도착 예정시간 얻기

 

이 순서대로 진행하여 3번 서비스 xml파일에서 해당 정류소를 경유하는 모든 버스 리스트를 조회할 수 있고 도착 정보를 확인할 수 있습니다.

열린 xml파일에서 각 버스의 arrmsg1 변수(첫번 째 도착예정시간)가 잘 출력되시나요?

 

저는 일부 버스 상태가  "출발대기"밖에 안뜨고 가끔 도착예정 정보가 뜨는데 서비스가 안정적이진 않은 것 같습니다.

다른분들은 도착예정시간이 잘 뜨는지 궁금합니다.

 

3번 서비스 설명에 적힌 "저상버스"의 의미가 정말 사전적인 의미의 "低床버스, 영어: low-floor bus)는 바닥이 낮고 출입구에 계단이 없는 버스"(출처: 위키백과) 여서 일반 버스의 경우 조회가 안되는건지, 아니면 서비스 자체가 불안정해서 그런건지는 잘 모르겠습니다. 

 

이제 이 내용을 파이썬 코드에서 필요한 부분(버스이름, 도착예정시간)만 추출할 수 있도록 코딩해야합니다.

일단, 방금 확인한 xml파일의 주소이름을 보면, 

http://ws.bus.go.kr/api/rest/arrive/getLowArrInfoByStId?serviceKey=api키&stId=정류장id 형태로 되어있습니다. 

대충 api키와 정류장id만 인자로 넣어주면 서비스 받을 수 있다는 것을 예상할 수 있는데, 실제로 확인해봅니다.

서비스 페이지에서 활용가이드 docs를 열어봅니다.

 

초반부분을 보시면 서비스 유형은 REST, 데이터 포맷은 XML, 교환 유형은 Request-Response라고 나옵니다.

 

 

페이지를 내리다보면 우리가 사용할 기능의 사용 방법이 잘 나와있습니다.

api키와 정류소id만 인자로 넣어주면 서비스를 이용할 수 있음을 확인할 수 있습니다. 좀 더 내려보면 결과 예시 창이 나오는데, 우리가 아까 open한 xml파일처럼 출력된다고 설명되어있는 것입니다.

 

 

이제 코드를 작성해보겠습니다.

기본적인 챗봇 부분은 아래와 같이 설정했습니다.

1
2
3
4
elif(user_text=="버스"):
       bus_info=bus_crawling()
        bot.send_message(chat_id=id,text=bus_info)
        bot.sendMessage(chat_id=id,text=info_message)
cs

 

이제 구현한 함수를 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def bus_crawling():
    serviceKey='api키'
    
    # 정류소 id
    #stationId="115000302"
    stationId="115000116"
    #버스 ID
    
    url="http://ws.bus.go.kr/api/rest/arrive/getLowArrInfoByStId?serviceKey={}&stId={}".format(serviceKey,stationId)
    #get으로 요청함
    response=requests.get(url).content
    #xml파일을 dict로 파싱하여 사용
    dict=xmltodict.parse(response)
 
    #원하는 데이터가 ServiceResult 내부 msgBody 내부 itemList내부에 있음 
    #다시 dict로 받은 값을 Json로 변환 
    jsonString=json.dumps(dict['ServiceResult']['msgBody']['itemList'],ensure_ascii=False)
    #json을 형태로 받은 데이터를 Python의 객체로 변환 (dict)
    jsonObj=json.loads(jsonString)
 
    msg=''
    for i in range(len(jsonObj)):
        msg+='{}\n 첫번째: {}\n 두번째: {}\n'.format(jsonObj[i]['rtNm'],jsonObj[i]['arrmsg1'],jsonObj[i]['arrmsg2'])
    return msg
 
cs

 

2행~9행은 사이트 이름 설정이고 11행에서 get형식으로 url을 받아옵니다.

13행은 xml을 dict형태로 파싱 해주는 코드인데

dict=xmltodict.parse(response)

 

이를 사용하기 위해 아래 명령어로 패키지를 설치해주고,

pip install xmltodict

 

맨 상단에 import json,xmltodict를 추가해줍니다.

아까 오픈한 xml파일을 보면, 구성이 아래와 같이 되어있었습니다.

ServiceResult 내부 msgBody내부 itemList 내부에 데이터가 쌓여있는데, 이 구조를 그대로 이용합니다.

17행 코드를 통해 dict를 json으로 덤프(변환)합니다.

jsonString=json.dumps(dict['ServiceResult']['msgBody']['itemList'],ensure_ascii=False)

 

19행에서 이 json형식을 다시 파이썬 객체(dict)로 로드함으로써 우리는 이제 버스이름, 도착예정시간을 쉽게 얻어올 수 있습니다.

jsonObj=json.loads(jsonString)

 

결과적으로 xml로 되어있는 url페이지를 dict로 파싱하겠다고 선언한 후 우리가 추출할 부분만 다시 json으로 변환한 뒤 이를 다시 dict으로 변환함으로써 배열인덱스 형태로 데이터를 얻어오는 것입니다.

 

 

실행결과는 앞서 살펴본 xml파일의 rtNM과 각 버스의 arrmsg1, arrmsg2가 그대로 똑같이 잘 전달됨을 확인할 수 있습니다. N65는 실제 운행이 종료된 버스가 맞는데, 652,6657버스는 xml파일에서도 그렇고 출발대기로만 뜨는게 이상하긴하지만 나머지 데이터는 잘 출력되었습니다.

 

 

 

이번시간에는 본인이 살고있는 동네의 날씨를 크롤링 해와서 챗봇에 서비스 기능을 추가해 주겠습니다.

보통, GPS를 킨 상태에서 핸드폰으로 네이버에 날씨를 검색하면 본인 동네의 날씨가 나오게 되는데, 이를 이용하겠습니다.

이번에는 간단하게 현재 동네 온도 정보를 받아오는 실습이기 때문에 어려운게 없습니다.

 

저는 휴대폰으로 네이버에 "날씨"를 검색하면 "발산 1동"의 날씨가 받아와 지므로,  네이버 검색창에 "발산1동 날씨"라고 검색한 뒤 그 페이지를 크롤링 하겠습니다.

https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EB%B0%9C%EC%82%B01%EB%8F%99+%EB%82%A0%EC%94%A8&oquery=%EB%B0%9C%EC%82%B01%EB%8F%99&tqi=hgpo3dprvxssseUUrFdssssst6Z-291650 

 

발산1동 날씨 : 네이버 통합검색

'발산1동 날씨'의 네이버 통합검색 결과입니다.

search.naver.com

 

계속 실습하다보니 대충 어떻게 데이터를 크롤링 해올지 감이 오지않나요? 

이번시간에는 구체적인 설명은 생략하겠습니다. 저는 아래 사진에서 박스친 부분의 데이터를 받아왔습니다.

 

날씨 정보를 크롤링 해오는 코드는 아래와 같습니다. 3가지 정보를 얻어왔습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def n_weather_crawling():
    url="https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%B0%9C%EC%82%B01%EB%8F%99%EB%82%A0%EC%94%A8"
    r=requests.get(url)
    soup=BeautifulSoup(r.text,'html.parser')
    weather_info=soup.select("div.today_area>div.main_info")
    if len(weather_info) >0:
        temperature=soup.select("span.todaytemp")
        cast_text=soup.select("p.cast_txt")
        indicator=soup.select("span.indicator")
        if len(temperature) >0 and len(cast_text)>0 and len(indicator)>0:
            temperature=temperature[0].text.strip()
            indicator=indicator[0].text.strip()
            txt=cast_text[0].text.strip()
            weather="{}도\r\n{}\r\n{}".format(temperature,indicator,txt)
        return weather
cs

 

챗봇 코드는 아래와 같습니다.

1
2
3
4
5
elif(user_text=="동네날씨"):
        #n: neighbor
        n_weather=n_weather_crawling()
        bot.send_message(chat_id=id,text=n_weather)
        bot.sendMessage(chat_id=id,text=info_message)      
cs

 

최종 결과는 아래와 같습니다.

위에서 살펴본 사이트에서 본인이 원하는 정보(미세먼지, 오존지수 등)를 입맛대로 추가할 수 있습니다.

 

 

 

 

 

 

 

이번시간에는 실시간 멜론차트 1~10순위 곡-가수 정보를 받아와 보겠습니다.

구현하면 할수록 크롤링을 어떻게 해야할지 쉽게 감이 오고 실력도 많이 느는 것 같습니다.

특히 굳이 앱을 킬 필요도 없이 텔레그램에서 코로나정보/차트순위/영화 정보를 서비스 받을 수 있다는 게 정말 흥미롭지 않나요??

라즈베리파이 서버/아마존 Ec2 같은 시스템을 이용한다면 지금처럼 pc를 켠 상태가 아니어도 서비스를 이용가능합니다.

 

멜론 차트 순위는 아래 링크에서 확인할 수 있습니다.

멜론차트>TOP100>멜론 (melon.com)

 

Melon

음악이 필요한 순간, 멜론

www.melon.com

 

실시간 음원차트 순위는 곡 순위를 확인하는 게 제일 큰 목적이므로

곡 순위/가수/곡 이름 정보만 크롤링하였습니다.

보시면 ellipsis클래스에서 rank01이 제목, rank02가 가수 이름임을 알 수 있습니다. 

 

 

더 늘려보면 아래처럼 span 태그안에 곡 이름/가수 이름이 링크로 연결되어있음을 확인할 수 있습니다.

주의할 점은 곡명은 하나이고 가수는 한명 이상이기 때문에 크롤링 할 때 가수이름 목록과 곡 제목을 긁어오는 코드 구조를 똑같이 구성하면 안된다는 것입니다.

가령, 위 사진에서 1위 곡 가수가 2명으로 되어있는데 코드를 긁어오는 방법에 따라 두번째 인자인 Justin Bieber가 2위 곡인 신호등과 매칭될 수 있다는 것입니다. 

 

코드를 살펴 보겠습니다.

주의할 것은 7,8행인데 8행을 7행처럼 'span >a' 라고 작성한다면 출력할 때 "신호등-Justin Beiber"가 출력될 것입니다.

가수는 한명 이상이고 제목은 하나이기 때문에 'span>a'로 작성하면 한명의 가수이름만 출력됩니다. 저스틴 비버가 짤리게되죠.

가수명(8행)은 span 태그만 사용하여 모든 가수를 불러오도록 해야합니다.

 

또한 11행, 17행 반복문 (index, value)형식으로 출력하는데, 출력해보면 곡 명 앞에 01,02 처럼 순위가 같이 딸려오게됩니다. (ex. 02신호등-이무진)

30행 str(titles[i][2:])을 보면, 같이 출력되는 '01', '02' 등을 건너 뛰고 제목부터 출력되게끔 조절하고 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def melon_chart_crawling():
    addr = 'https://www.melon.com/chart/index.htm'
 
    driver.get(addr)
    melon = driver.page_source
    soup = BeautifulSoup(melon, 'html.parser')
    title = soup.select('#frm > div div.ellipsis.rank01 > span > a')
    artist = soup.select('#frm > div div.ellipsis.rank02 > span')
 
    titles = []
    for i,j in enumerate(title):
        if i < 10:
            tts = str(i) + ' ' + j.get_text()
            titles.append(tts)
 
    artists = []
    for i, j in enumerate(artist):
        if i < 10:
            tts = j.get_text()
            artists.append(tts)
 
    key_val = [titles, artists]
    # rank_text = dict(zip(*key_val))
    
    #titles, artists 는 .text필드 없음, str로 파싱 후 title은 앞자리2번째부터
    output=" "
    #10개. 더 구하고싶으면 더 조절
    for i in range (0,10):
        
        output+=str(i+1)+'위: '+str(titles[i][2:])+"-"+str(artists[i])+'\n'
            
    return output
 
cs

 

메세지 송수신 부분 코드는 아래와 같습니다.

1
2
3
4
5
elif( user_text=="멜론"):
        bot.send_message(chat_id=id, text="조회 중 입니다...")
        melon_chart=melon_chart_crawling()
        bot.send_message(chat_id=id, text=melon_chart)
        bot.sendMessage(chat_id=id, text=info_message)
cs

 

실행을하고 "멜론"을 보내면 아래처럼 곡 정보가 잘 받아와 지는 것을 확인할 수 있습니다.

+ Recent posts