
코딩없이 시작하는 엑셀 크롤링. WEB부터 ChatGPT API까지
₩69,300
입문 / Excel PowerQuery, 웹 크롤링, 웹 스크래핑, openAI API, RPA
4.7
(7)
코딩을 모르는 분들도 쉽게, 엑셀 파워쿼리 기능을 활용하여 데이터를 수집하고 가공하는 방법을 배우실 수 있어요. 아래 프로젝트를 같이 실습하면서 엑셀 크롤링 기술을 배웁니다.
입문
Excel PowerQuery, 웹 크롤링, 웹 스크래핑
실전형 인공지능 분석, 빅데이터 분석, 앱 개발에 대해 경험한 내용을 여러분과 공유하고 싶습니다.
부족한 점이 있더라도 많이 응원해주시면, 더 열심히 노력해보겠습니다. 감사합니다.
코딩없이 시작하는 엑셀 크롤링. WEB부터 ChatGPT API까지
₩69,300
입문 / Excel PowerQuery, 웹 크롤링, 웹 스크래핑, openAI API, RPA
4.7
(7)
코딩을 모르는 분들도 쉽게, 엑셀 파워쿼리 기능을 활용하여 데이터를 수집하고 가공하는 방법을 배우실 수 있어요. 아래 프로젝트를 같이 실습하면서 엑셀 크롤링 기술을 배웁니다.
입문
Excel PowerQuery, 웹 크롤링, 웹 스크래핑
[Python 초보] Flutter로 만드는 ChatGPT 음성번역앱
₩69,300
초급 / Python, Flutter, ChatGPT, openAI API, 챗봇
5.0
(6)
Python 배우긴 했는데, 어떻게 활용할지 막막한 분을 위한 강의입니다. 프로그램 기초지식을 99.9% 활용!!! 어려운 코드를 최소화하여 기본 예제코드를 가지고 만드는 Flutter 음성번역앱에 도전해보세요. chatGPT와 대화하고, 외국인 친구와 하는 대화를 번역해주고, 음성으로 이미지를 그리고, 파인튜닝으로 대화앱을 업그레이드합니다.
초급
Python, Flutter, ChatGPT
질문&답변
새로운 조달청 버전으로 다시 알려주실 수 있을까요?
안녕하세요? daniel.na님..송구하게도 일정 때문에, 이번 달에 추가하기는 좀 어려울 것 같습니다.5월 초 연휴 기간에(연휴가 있어 다행입니다 ^^) 정리해서 업데이트 해보겠습니다. 불편을 드려 죄송합니다.- 웹 페이지 수집에서 POST 방식 추가 학습한 후 조달청 웹페이지 수집- 2024년 12월 갱신된 조달청 API에 맞게 API 통신 수정크게는 이렇게 2가지 업데이트를 진행할 계획입니다.감사합니다.
질문&답변
함수를 이용한 페이징 처리_함수 오류
안녕하세요? heejk1226님 올려주신 화면을 보기로는... 글씨가 더 크게보이는데요.전각문자라고 하는 형태로 입력이 되어서 변수명을 잘 인식하지 못하는 것 같습니다.참고 : https://ohhohohong.tistory.com/entry/%EC%88%AB%EC%9E%90-%EC%98%81%EB%AC%B8%EC%9D%B4-%ED%81%AC%EA%B2%8C-%EC%A0%81%ED%9E%88%EB%82%98%EC%9A%94-%EC%A0%84%EA%B0%81-%EB%B0%98%EA%B0%81-%ED%99%95%EC%9D%B8%ED%95%B4%EB%B3%B4%EC%84%B8%EC%9A%94 위 내용처럼 전각, 반각을 바꿔서 다시 입력해보시거나, 메모장 같은데서 같은 내용을 입력해보시고, 이 내용을 복붙해서 다시 시도해보시는 것을 추천합니다.성공하시길 바랍니다. 감사합니다.
질문&답변
7강-삭제관련 내용
추가 의견이 없으셔서 해결로 상태변경하겠습니다. 감사합니다.
질문&답변
테이블 자료 불러오기 오류
아래 heejk1226님께서 알려주셔서, 오류 부분 확인했습니다.다음 뉴스가 개편을 하면서 HTML구조와 URL이 바뀌어서 발생한 문제였고,1강에 보시면 첨부자료에 수정된 파일을 올려두었습니다.(https://www.inflearn.com/courses/lecture?courseId=335249&type=LECTURE&unitId=249289&tab=curriculum&subtitleLanguage=ko)URL이 바뀌었기 때문에 daum사이트에서 현재 URL을 사용하여 데이터를 수집하시면 정상적으로 테스트하실 수 있습니다. 감사합니다. 변경된 다음 뉴스 URL : https://search.daum.net/search?w=news&nil_search=btn&DA=NTB&enc=utf8&cluster=y&cluster_page=1&q=%EC%9D%B4%EC%8A%A4%EB%9D%BC%EC%97%98+%EC%A0%84%EC%9F%81변경된 다음 뉴스 최신순 URL : https://search.daum.net/search?w=news&nil_search=btn&DA=STC&enc=utf8&cluster=y&cluster_page=1&q=%EC%9D%B4%EC%8A%A4%EB%9D%BC%EC%97%98+%EC%A0%84%EC%9F%81&p=1&sort=recency
질문&답변
7강-삭제관련 내용
안녕하세요? heejk1226님. 다비입니다.조달청 강의가 제공되지 못한 점 죄송하게 생각합니다.그리고, 한국은행 금융규제같은 수집처 내용을 제안해주신 것에 감사드립니다. 사실 조달청 부분은 웹수집과 API수집을 좀 더 연습하시기 바라는 마음에 포함한 부분이라서, 다른 챕터를 잘 따라하셨다면, 한국은행 금융규제와 같은 다른 웹페이지 API도 도전해보실 수 있는 실력을 가지고 계시리라 생각합니다. 조달청 API는 최근 재정비 되는 것으로 알고 있습니다. Web수집은 이전에 제가 테스트하고 답변드린 내용이 있어 아래에 링크 공유드립니다.https://www.inflearn.com/community/questions/1481879/%EB%82%98%EB%9D%BC%EC%9E%A5%ED%84%B0-url-%EC%88%98%EC%A7%91 한국은행 금융규제 관련해서는 본 강의 범위 밖의 내용이긴 합니다만, 구체적인 URL을 알려주시면 같이 방법을 찾아보겠습니다. 감사합니다.
질문&답변
테이블 자료 불러오기 오류
안녕하세요? 서형준님. 다비입니다. 혹시 어느 챕터를 진행하고 계신 것인지 알려주시면 보다 빠른 확인 가능하겠습니다. 감사합니다.
질문&답변
나라장터 URL 수집
POST로 바뀌면서 API체계를 따라가다 보니 내용이 많이 복잡해졌습니다. 참고하실 수 있도록 아래에 코드 추가해드립니다. 시기를 보아서 이 부분은 강의에서 내리거나 update하도록 하겠습니다.조달청API도 3개월 후에 정지된다는 메일을 받은 적이 있는데요. 안정성을 고려해서 조치하겠습니다. 미리 조치하지 못해 죄송합니다. POST통신을 하게 되면Header값처럼 별도로 POST통신에 사용하는 값을 전달해주어야 데이터에 접근할 수 있습니다. 나라장터의 경우 이 항목이 매우 많아 코드가 복잡함을 양해해주시기 바랍니다. let Payload = Text.ToBinary( "{""dlBidPbancLstM"":{""untyBidPbancNo"":"""",""bidPbancNo"":"""",""bidPbancOrd"":"""",""prcmBsneUntyNoOrd"":"""",""prcmBsneSeCd"":""0000 조070001 조070002 조070003 조070004 조070005 민079999"",""bidPbancNm"":""인공지능"",""pbancPstgDt"":"""",""ldocNoVal"":"""",""bidPrspPrce"":"""",""ctrtDmndRcptNo"":"""",""dmstcOvrsSeCd"":"""",""pbancKndCd"":""공440002"",""ctrtTyCd"":"""",""bidCtrtMthdCd"":"""",""scsbdMthdCd"":"""",""fromBidDt"":""20241208"",""toBidDt"":""20250107"",""minBidPrspPrce"":"""",""maxBidPrspPrce"":"""",""bsneAllYn"":""Y"",""frcpYn"":""Y"",""rsrvYn"":""Y"",""laseYn"":""Y"",""untyGrpGb"":"""",""dmstNm"":"""",""pbancPicNm"":"""",""odnLmtLgdngCd"":"""",""odnLmtLgdngNm"":"""",""intpCd"":"""",""intpNm"":"""",""dtlsPrnmNo"":"""",""dtlsPrnmNm"":"""",""slprRcptDdlnYn"":"""",""lcrtTyCd"":"""",""isMas"":"""",""isElpdt"":"""",""oderInstUntyGrpNo"":"""",""esdacYn"":"""",""infoSysCd"":""정010029"",""contxtSeCd"":""콘010006"",""bidDateType"":""R"",""brcoOrgnCd"":"""",""deptOrgnCd"":"""",""isShop"":"""",""srchTy"":""0"",""cangParmVal"":"""",""currentPage"":"""",""recordCountPerPage"":""10"",""startIndex"":1,""endIndex"":10}}" ), Source = Json.Document( Web.Contents("https://www.g2b.go.kr/pn/pnp/pnpe/BidPbac/selectBidPbacScrollTypeList.do", [ Headers = [ #"authority" = "www.g2b.go.kr", #"method" = "POST", #"path" = "/pn/pnp/pnpe/BidPbac/selectBidPbacScrollTypeList.do", #"scheme" = "https", #"accept" = "application/json", #"accept-encoding" = "gzip, deflate", #"accept-language" = "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6,zh;q=0.5,zh-TW;q=0.4,zh-HK;q=0.3", #"content-type" = "application/json;charset=UTF-8", #"cookie" = "WHATAP=x2amc4safu1krv; XTVID=A2501071301227329; Path=/; infoSysCd=%EC%A0%95010029; _harry_ref=https%3A//www.google.com/; _harry_url=https%3A//www.g2b.go.kr/; _harry_fid=hh-1701578081; _harry_lang=ko-KR; system_language=ko; poupR23AB0000013415=done; poupR23AB0000013414=done; lastAccess=1736223179861; JSESSIONID=NWU3ZmNhMmEtODkyZC00YjdiLWExMzEtNmFjZWQyZDE4Zjk0; _harry_hsid=A250107165624222833; _harry_dsid=A250107165624222403; XTSID=A250107165624222203; xloc=1707X960; globalDebug=false; XTVID=A2501071301227329", #"menu-info" = "{""menuNo"":""01175"",""menuCangVal"":""PNPE001_01"",""bsneClsfCd"":""%EC%97%85130026"",""scrnNo"":""00941""}", #"origin" = "https://www.g2b.go.kr", #"priority" = "u=1, i", #"referer" = "https://www.g2b.go.kr/", #"sec-ch-ua" = """Google Chrome"";v=""131"", ""Chromium"";v=""131"", ""Not_A Brand"";v=""24""", #"sec-ch-ua-mobile" = "?0", #"sec-ch-ua-platform" = """Windows""", #"sec-fetch-dest" = "empty", #"sec-fetch-mode" = "cors", #"sec-fetch-site" = "same-origin", #"submissionid" = "mf_wfm_container_tacBidPbancLst_contents_tab2_body_sbmPbancBidPbancLst", #"target-id" = "btnS0004", #"user-agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", #"usr-id" = "null" ], Content = Payload ] ) ), result = Source[result], #"테이블로 변환됨" = Table.FromList(result, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"확장된 Column1" = Table.ExpandRecordColumn(#"테이블로 변환됨", "Column1", {"prcmBsneSeCd", "prcmBsneSeCdNm", "pbancSeYnNm", "scsbdMthdDtlsCrtrNm", "scsbdMthdCd", "scsbdMthdDtlsCrtrNo", "bidPbancUntyNoOrd", "pbancSttsNm", "pbancSttsCd", "untyBidPbancNo", "untyBidPbancOrd", "bidPbancUntyNo", "bidPbancUntyOrd", "bidPbancNm", "oderInstUntyGrpNo", "oderInstUntyGrpNm", "dmstNm", "pbancPstgDt", "linkInstPbancLnkUrl", "untyBidPbancRegTyCd", "bidMthdCd", "aagrSbmsnElctHdwrSeCd", "rowNum", "prcmBsneUntyNo", "prcmBsneUntyOrd", "bidClsfNo", "bidPrgrsOrd", "bsneClsfCd", "prcmBsneUntyOdn3Val", "prcmBsneUntyOdn4Val", "prcmBsneUntyOdn5Val", "prcmBsneUntyOdn6Val", "prcmBsneUntyOdn7Val", "pbancPicId", "pbancPicNm", "lastPbancYn", "currentPage", "recordCountPerPage", "nextRowYn", "sessUsrIpar", "prgrsUntyPrcmBsneNo", "orderByYn", "gupBsneUntNo", "gupBsneUntNm", "stepBsneUntNo", "stepBsneUntNm", "prssBsneUntNo", "prssBsneUntNm", "bsnePrssPrgrsSeCd", "bsnePrssPrgrsSeNm", "prcsDt", "bsneFlowNo", "prcsRsn", "menuCangVal", "cangParmVal", "resultCode", "resultMsg"}, {"prcmBsneSeCd", "prcmBsneSeCdNm", "pbancSeYnNm", "scsbdMthdDtlsCrtrNm", "scsbdMthdCd", "scsbdMthdDtlsCrtrNo", "bidPbancUntyNoOrd", "pbancSttsNm", "pbancSttsCd", "untyBidPbancNo", "untyBidPbancOrd", "bidPbancUntyNo", "bidPbancUntyOrd", "bidPbancNm", "oderInstUntyGrpNo", "oderInstUntyGrpNm", "dmstNm", "pbancPstgDt", "linkInstPbancLnkUrl", "untyBidPbancRegTyCd", "bidMthdCd", "aagrSbmsnElctHdwrSeCd", "rowNum", "prcmBsneUntyNo", "prcmBsneUntyOrd", "bidClsfNo", "bidPrgrsOrd", "bsneClsfCd", "prcmBsneUntyOdn3Val", "prcmBsneUntyOdn4Val", "prcmBsneUntyOdn5Val", "prcmBsneUntyOdn6Val", "prcmBsneUntyOdn7Val", "pbancPicId", "pbancPicNm", "lastPbancYn", "currentPage", "recordCountPerPage", "nextRowYn", "sessUsrIpar", "prgrsUntyPrcmBsneNo", "orderByYn", "gupBsneUntNo", "gupBsneUntNm", "stepBsneUntNo", "stepBsneUntNm", "prssBsneUntNo", "prssBsneUntNm", "bsnePrssPrgrsSeCd", "bsnePrssPrgrsSeNm", "prcsDt", "bsneFlowNo", "prcsRsn", "menuCangVal", "cangParmVal", "resultCode", "resultMsg"}) in #"확장된 Column1"
질문&답변
나라장터 URL 수집
안녕하세요? 개편이 크게 되었네요. ^^ 가장 큰 변화가 기존에는 통신 방식이 GET이었는데요. POST로 바뀌었네요.개발자도구에서 파일 형식을 Doc가 아닌 JS로 하면 selectBidPbacScrollTypeList.do를 보실 수 있는데요. 이 파일을 클릭해보시면 원하시는 정보가 JSON형식으로 들어 있습니다.따라서 이 파일을 수집하셔야 하는데요. Headers를 보시면 Request Method가 POST로 되어있습니다.(사진) (사진) POST통신은 사실 강의 범위 밖의 내용이라 개편 후 사이트에 맞게 추가 테스트를 해야 답을 드릴 수 있겠습니다. 그나마 엑셀 다운로드 기능이 추가 되어 바로 데이터를 다운로드 할 수 있게 되었으니, 이 기능을 이용해보시는 것을 권해드립니다. 감사합니다.
질문&답변
나라장터 URL 수집
안녕하세요?크롤링은 상대방 웹사이트의 구조에 맞춰서 데이터를 가져오기 때문에,개편을 하면 대부분 구조가 바뀌어 이전 방식으로 수집이 안되는 경우가 많습니다. 저도 개편된 구조를 한 번 살펴보고 다시 답변 드리도록 하겠습니다. 감사합니다.
질문&답변
[질문] 네이버쇼핑 - 로그인이 필요한 제품에 가격 가져오기
안녕하세요?좋은 질문해주셔서 감사합니다. API는 여러 개 신청할 수 있습니다. 올려주신 화면만 보면, 휴대폰 인증이 안되어 있는 것으로 보입니다. 한 번 확인 부탁 드리겠습니다. 그리고, 위 업체정보와 가격정보 내용은 API가 제공하지 않는 정보입니다.API는 상품목록(상품검색결과 화면을 생각하시면 될 것 같습니다.) 중 일부 정보를 제공합니다.따라서, 추가정보 수집을 원하시면 웹페이지 크롤링 작업을 하셔야 합니다. (아래 예시 참고)그런데, 엑셀로 로그인을 하는 크롤링은 난이도가 많이 올라가서, 엑셀 파워쿼리로 하시는 것보다는 파이썬 Selenium등을 이용해서 수집하는 것이 일반적입니다. 로그인이 없는 경우라면, 아래 그림처럼 수집이 가능합니다.상품이 여러개인 경우는 강의 내용 중 섹션6의 반복처리 부분을 참고하셔서 뒷 부분의 제품고유번호를 반복처리하실 수 있겠습니다.https://search.shopping.naver.com/catalog/13505853937(사진) 감사합니다.