묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
네이버 주식 크롤링 종목명 에러
선생님 안녕하세요좋은 강의 감사합니다. 강의 코드와 조금 다르게 작성을 해보았는데요네이버 주식 크롤링 부분에서 종목명을 가져오는 경우 에러가 발생해서 도움을 요청드립니다. 네이버증권 코드는 아래와 같이 되어있는데요 trs = soup.select("table.type_2 > tbody > tr[onmouseover='mouseOver(this)']") # class가 number로만 되어있고 안쪽에 잇는 것들이 구분이 안된다. # n번째 td 를 가져오도록 설정하면 된다. nth-child가 안되므로 다른 방법 사용 for tr in trs: name = tr.select_one('a.title').text이라고 작성하면 nonetype은 text가 없다는 에러가 뜹니다. name = tr.select_one('td > a.title').text라고 작성해도 똑같은 오류가 뜨는데, 제가 보기에는 맞는 코드 같거든요;;; 혹시 어디가 잘못된 것인지 말씀이 가능하실까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
크롤링 데이터 가공 후 입력창에 넣기
수업 잘 듣고 있습니다.자동화를 하고 싶으서 예전 영상 보다가 최근에 다시 올라와서 보는 중 강의 발견하고 바로 수강해서 듣고 있습니다. 궁금한 것이 하나 있는데요.셀레니움에서 하나의 윈도우 창의 특정 태그 값을 찾아서다른 윈도우 창을 오픈 한 후 특정 필드에 값을 넣을 수 있나요?
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
headless chrome 오류 문의
안녕하세요 headless chrome 오류 문의 드립니다.위 코드 실행 시..WebDriverException: Message: unknown error: Chrome failed to start: was killed. 오류문구가 뜨는데크롬 드라이버 이슈가 있는 걸까요???크롬, 크롬드라이버는 110버전으로 사용하고 있습니다.추가로 셀레니움은 잘됩니다!!
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
구글 무비 강좌에서요
movies=soup.find_all("div",attrs={'class':'???}) title=movie.find('span',attrs={'class':'???'}).get_text()attrs 값을 못찾겠습니다.
-
해결됨남박사의 파이썬 기초부터 실전 100% 활용
list.reverse() 출력에 대해서 질문있습니다.
안녕하세요. 남박사님. list() 데이터 구조에서 reverse() 메서드의 결과값이 이해가 안되서 질문을 남기게 되었습니다.a=[4,5,6,1,2,3] a.sort() print(a) b=[4,5,6,1,2,3] b.reverse() print(b)[1, 2, 3, 4, 5, 6] [3, 2, 1, 6, 5, 4]sort()는 정방향 정렬, reverse()는 역방향 정렬이라고 배웠는데요. 역방향 정렬의 결과값이 제가 생각했을 때는 [6,5,4,3,2,1]로 출력되어야 할것 같은데 제 예상과는 반대로 [3,2,1,6,5,4]로 출력되고 있습니다. 왜 그런지 궁금합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
엑셀(구글)시트에 크롤링 하는 경우 열 변경시 문제
선생님 안녕하세요좋은 강의 감사합니다. 강의 외적으로 질문드립니다. 정기적으로 크롤링을 해와서 엑셀에 정보를 업데이트 하는 것을 하고 싶은데요 예를 들어, A열에 종목번호, B열에 종가를 넣다가, 갑자기 두 열 사이에 하나 열을 추가해서 다른 정보를 넣어야 할때가 많은데요(예를 들어, PER나 PBR같은 정보) 이런 경우에 B열로 종가를 불러오게 하면 계속 정보가 덧쓰일것 같아서요.이 경우, B열로 불러오라는 코드를 수정하지 않고, 자동으로 C열로 밀리도록 코딩을 하려면 어떻게 해야 하나요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
다음 업데이트는 어떤 내용인지 알수있을까요?
강의 잘 보고있습니다.다음 업데이트는 어떤 내용이 올라올지 궁금해서 질문올립니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
주식 데이터 상한가를 크롤링 하고 싶은데 방법을 모르겠습니다.
주식데이터를 크롤링 할때 품목의 현재가를 가져올때는 id="_nowVal" 라는 고유의 id가 있어서 가져왔는데 상한가를 가져올때는 특별한 고유 id가 없는데 어떤식으로 크롤링을 해야하는건가요??
-
해결됨네이버 카페 DB 추출 프로그램 개발 강의 [selenium]
이강의도
솔직히 들어본 결과처음에 파이썬 셀레니움 이나 poser 크롬 드라이브 설치부터 0강의에 넣어 두시는 게 ...좋을 거 같아요추가적으로 GUI강좌 까지 하시면 가격 더 올려도많은 사람들이 한번 볼 꺼 같습니다 아무튼 같은 부산 사람이라 강의 한번 들었는데정말 설명을 잘하시네요 ^^
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
뉴스 본문 내용 크롤링 응용
import requests from bs4 import BeautifulSoup respones = requests.get("https://www.coupang.com/np/categories/498917") html = respones.text soup = BeautifulSoup(html,'html.parser') item = soup.select(".baby-product-link") # 쿠팡 아이템 1페이지 모두 지정 for items in item: print(f"{pn}페이지 입니다=========================") name = items.select("div.name") #리스트 url = items.attrs['href'] #두번째 링크의 href를 추출 그리고 url에 저장 response = requests.get(url, headers={'user-agent' : 'mozila/5.0'}) # headers={'user-agent' : 'mozila/5.0'}로 기계같이 보이는 오류를 막음 #받아온 url들을 다시 불러옴 html = response.text # 받아온걸 텍스트로 변환 soup = BeautifulSoup(html,'html.parser') # 알아보기쉽게 만들어줌 img = soup.attrs[".src"]# 본문이 가지고 있는 자신만의 태그로 지정 print (name,img) pn = pn + 1이런식으로 응용 해보았는데 실행을 하면 오류도 없고 아무 동작이 없네요 .. 이런 경우 어떻게 해야하죠 ? 터미널에는 아무 글도 안떠요 그냥 파일 경로만 뜹니다
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
8분 46초 질문
a태그에 클래스명이 nav이면서 shop클래스 동시에 갖고있는 녀석이라 하셨는데, 띄어쓰기로 되어 있으면 . 으로 구분해주면 되는 건가요? 쇼핑 옆에 Pay를 열어보려고 해봤는데 못하겠습니다. 쇼핑은 마우스 올려놓으면 a.nav.shop이라 뜨지만 나머지들은 a.nav라고만 뜨는게 많은데 얘네들은 어떻게 해야하나요?? 제가 질문한 내용들이 실전편에 나오나요??
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
추출한 데이터를 판다스 데이터프레임으로 만들고 엑셀파일로 만드는 내용 추가
크롤링 잘 배우고 있습니다. 추가 요청사항이 있는데요. 추출한 데이터를 판다스 데이터프레임으로 만들고 엑셀파일로 만드는 내용도 추가되면 다양하게 활용하는데 좋을 것 같습니다.
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
네이버 IT뉴스 화면 requets.get 에러가 발생합니다ㅜ
네이버 IT 뉴스 링크를 그냥 크롬이나 사파리를 통해서 접속하면 정상적으로 잘 접속이 됩니다.하지만 requests.get을 사용하면 에러가 발생해 파싱을 정상적으로 하기 힘든 상황입니다.ㅠ셀레니움을 사용하던지 다른 뉴스 페이지를 사용해야할거같습니다.저의 경우는 구글뉴스를 파싱 했습니다.좋은 강의 해주셔서 감사합니다.! import re import requests from bs4 import BeautifulSoup weather_url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%84%9C%EC%9A%B8+%EB%82%A0%EC%94%A8&oquery=%EC%84%9C%EC%9A%B8+%EB%82%A0%EC%8B%9C&tqi=h%2B4nksprvTVssQv3%2BkdssssstAZ-264690" news_url = "https://www.google.com/search?q=%EA%B5%AC%EA%B8%80%EB%89%B4%EC%8A%A4&rlz=1C5CHFA_enKR979KR979&source=lnms&tbm=nws&sa=X&ved=2ahUKEwio8ZP_jIP9AhXnm1YBHfaRBAUQ_AUoAXoECAEQAw&biw=1057&bih=976&dpr=1" english_url = "https://www.hackers.co.kr/?c=s_eng/eng_contents/I_others_english&keywd=haceng_submain_lnb_eng_I_others_english&logger_kw=haceng_submain_lnb_eng_I_others_english" headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", "Accept-Language":"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7" } def create_soup(url): res = requests.get(url, headers=headers) res.raise_for_status() return BeautifulSoup(res.text, "lxml") def get_weather_info(): soup = create_soup(weather_url) current_temp = soup.find("div", attrs={"class": "temperature_text"}).get_text().strip().split()[-1][2:] compare = soup.find("p", attrs={"class": "summary"}).get_text() summary_list = soup.find("dl", attrs={"class": "summary_list"}).get_text().strip() dust = soup.find_all("li", attrs={"class": "item_today level1"})[0].get_text().strip() micro_dust = soup.find_all("li", attrs={"class": "item_today level1"})[1].get_text().strip() uv = soup.find("li", attrs={"class": "item_today level2"}).get_text().strip() sunset = soup.find("li", attrs={"class": "item_today type_sun"}).get_text().strip() rain_ratio = soup.find("li", attrs={"class": "week_item today"}).find_all("span", attrs={"class": "weather_left"}) rain_ratio_am = rain_ratio[0].get_text().strip() rain_ratio_pm = rain_ratio[1].get_text().strip() print("현재 기온 : {}".format(current_temp)) print(compare) print(summary_list) print("{} / {} / {} / {}".format(dust, micro_dust, uv, sunset)) print("강수 확률 : {} / {}\n".format(rain_ratio_am, rain_ratio_pm)) def get_news_headline(): soup = create_soup(news_url) headlines = soup.find_all("div", attrs={"class": "mCBkyc ynAwRc MBeuO nDgy9d"}, limit=6) urls = soup.find_all("a", attrs={"class": "WlydOe"}, limit=6) for idx, headline in enumerate(headlines): print(headline.get_text()) print(urls[idx]["href"] + "\n") def get_eng_sentence(): soup = create_soup(english_url) expression = soup.find_all("b", attrs={"class": "conv_txtTitle"}) sentences = soup.find_all("div", attrs={"id": re.compile("conv_kor_t\d*")}) print("\n< 오늘의 영어 회화 >") print("한글 표현") print("* " + expression[0].get_text()) for sentence in sentences[0:len(sentences)//2]: print(sentence.get_text().strip()) print("\n영어 표현") print("* " + expression[1].get_text()) for sentence in sentences[len(sentences) // 2:]: print(sentence.get_text().strip()) def main(): get_weather_info() get_news_headline() get_eng_sentence() if __name__ == "__main__": main()
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
23년 2월 7일, 다음 부동산 화면이 다름
23년 2월 7일 현재, 강의해주신 다음부동산의 화면이 상이해 네이버 부동산을 이용해서 비슷하게 따라해봤습니다.import requests from bs4 import BeautifulSoup url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%86%A1%ED%8C%8C+%ED%97%AC%EB%A6%AC%EC%98%A4%EC%8B%9C%ED%8B%B0+%EB%A7%A4%EB%AC%BC&oquery=%EC%86%A1%ED%8C%8C+%ED%97%AC%EB%A6%AC%EC%98%A4%EC%8B%9C%ED%8B%B0+%EB%A7%A4%EB%A7%A4&tqi=h%2B4thwprvmZss6uUL7ossssstOZ-299895" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") houses = soup.find_all("tr", attrs={"class": {"_land_tr_row"}}) for num, house in enumerate(houses): info = house.get_text().split() print(f"=========={num+1}번 매물==========") print(f"매매 방식 : {info[0]}") print(f"매물 위치 : {info[1]}") print(f"매물 이름 : {info[2]}") print(f"동 : {info[3][:4]}") print(f"거래 부동산 : {info[3][4:]}") print(f"면적 : {info[4]}") print(f"가격 : {info[5]} 만원") print(f"층 : {info[-2]}")
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
어제 강의 이어서 질문드립니다
안녕하세요!어제 질문 드리고 오늘 이어서 강의 들으면서 제가 스스로 좀 해보았는데요. import requestsfrom bs4 import BeautifulSoupres = requests.get('https://v.daum.net/v/20170615203441266')soup = BeautifulSoup(res.content,'html.parser')items = soup.select('div.article_view p')for item in items: print(item.get_text()) 이렇게 코드를 넣었는데내주 부동산 종합대책 발표 집값 상승 노린 투기 분양 차단 LTVㆍDTI 규제 다시 강화할 듯 저소득 실수요자 피해 우려도 금융당국이 급증하는 가계부채 증가세를 막기 위해 아파트 잔금대출에도 소득을 따져 대출한도를 정하는 총부채상환비율(DTI)을 적용하는 방안을 유력하게 검토하고 있다. 지금은 집값을 기준으로 대출한도를 매기는 주택담보인정비율(LTV) 규제만 적용돼 소득이 없어도 집값의 70%를 빌려 잔금을 치르는 게 가능하다. 앞으로 잔금대출에 DTI가 적용되면 소득 없는 사람이 입주 뒤 집값 상승을 노리고 분양시장에 뛰어드는 게 사실상 불가능해진다. 금융당국 고위관계자는 15일 “잔금대출에도 DTI를 적용하는 방안을 검토 중”이라며 “다만 아직 최종 결론이 난 건 아니다”고 말했다. 정부는 내주 이 같은 내용을 포함한 부동산 종합 대책을 발표할 예정이다. 정부가 잔금대출 DTI 적용 카드를 꺼내는 건, 집단대출을 잡지 않고선 과열된 주택시장을 진정시키기 어렵다는 판단에서다. 실제 정부는 지난해 잔금대출도 대출 초기부터 원리금을 함께 갚도록 하는 여신심사 가이드라인을 도입했지만 이렇다 할 효과를 거두지 못했다. 오히려 정부 대책에도 불구, 집단대출 증가액은 매달 늘어나는 추세인데 지난달엔 2조원으로 올 들어 최고치를 기록했다. 아파트 분양 집단대출은 중도금과 잔금대출로 구분된다. 계약금 10%를 내면 입주 전까지 집값의 60%를 중도금 대출로 받을 수 있다. 중도금 대출은 건설사 보증으로 이뤄져 소득심사를 안 거친다. 잔금대출은 건설사가 아닌 집을 담보로 이뤄지는 대출이다. LTV 규제만 적용돼 소득이 없어도 집값의 70%까지 대출이 가능하다. 때문에 지금은 잔금대출로 집값의 70%를 대출받아 기존 중도금 대출을 갚고 나머지 20%만 본인 돈으로 충당하면 집을 살 수 있다. 앞으로 잔금대출에 DTI가 적용되면 소득이 없는 사람은 집값의 70% 대출 받는 게 어려워진다. 입주 뒤 집값 상승을 노리는 투기수요를 확실히 걸러낼 초강력 대책이 될 수 있다. 하지만 부작용도 우려된다. 소득이 낮은 사회초년생 등은 청약통장을 갖고도 분양시장에 진입하는 게 어려워지기 때문이다. 이에 따라 잔금대출에 DTI를 적용하는 것 역시 지역 등에 따라 선별적으로 이뤄질 가능성이 높다. 현재 당국은 신규 분양 물량부터 규제를 적용할지 아니면 기존 분양 물량까지 규제 범위를 확대할지를 놓고 시뮬레이션을 하고 있다. 아울러 당국은 지난 2년간 완화됐던 LTV와 DTI를 다시 강화할 것으로 보인다. 현재 LTV(은행 기준)는 기존 50~60%에서 70%, DTI는 50~60%에서 60%로 완화돼 있는 상태다. 당국은 일괄적인 조이기보다 지역ㆍ집값 수준별로 기준을 다르게 적용하는 방식을 모색할 것으로 보인다. 김동욱 기자 kdw1280@hankookilbo.com 이렇게 기사 텍스트 전체가 나오더라구요 <section dmcf-sid="ndxAvoEFLc"> <p dmcf-pid="nzrJ5KB3Cc" dmcf-ptype="general">내주 부동산 종합대책 발표</p> <p dmcf-pid="ncFbmYUgSc" dmcf-ptype="general">집값 상승 노린 투기 분양 차단</p> <p dmcf-pid="naDeB8j0HH" dmcf-ptype="general">LTVㆍDTI 규제 다시 강화할 듯</p> <p dmcf-pid="ngfl6lJwwk" dmcf-ptype="general">저소득 실수요자 피해 우려도</p> selectin dmcf라는 태그를 넣어서 요약글만 추출을 하려면 어떻게 해야할까요? 이렇게 저렇게 해봤는데 잘안되네요 ㅠㅠ
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
질문있습니다
안녕하세요 셀레니움을 사용해 상품 정보를 가지고 오는 것 까지 수강 했는데 추가적으로 상품을 하나하나 들어가서 상품 상세페이지와 옵션값(색상,사이즈) 까지 가지고 오는 경로를 생각 해보고 싶은데요 이런 경우에 스타트코딩님 실전편 결제 해서 들으면 생각을 해볼 수 있을까요 ?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
주피터 practice 이름 설정
동영상 4:45 부분입니다. 제목 practice로 제목수정하는 부분에서 오류가 생깁니다. Rename이 눌리지 않고 하기와 같이 오류가 뜨는데 방법 알려주실 수 있을까요?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
패턴으로 실습하며 익히기:html/css 이해를 바탕으로 크롤링하기
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <div class="layer_body" data-translation="true"> <p>금융당국이 급증하는 가계부채 증가세를 막기 위해 아파트 잔금대출에도 소득을 따져 대출한도를 정하는 총부채상환비율(DTI)을 적용하는 방안을 유력하게 검토하고 있다.</p> <p>지금은 집값을 기준으로 대출한도를 매기는 주택담보인정비율(LTV) 규제만 적용돼 소득이 없어도 집값의 70%를 빌려 잔금을 치르는 게 가능하다.</p> <p>앞으로 잔금대출에 DTI가 적용되면 소득이 없는 사람은 집값의 70% 대출 받는 게 어려워진다.</p> </div> 안녕하세요.지금 강의 중인 내용에 보면 class의 div 값과 다르게 2개의 값이 연이어 나오는데요.이런 경우에는 어떻게 입력하면 될까요?복사해서 넣어보고 했는데 계속 오류가 뜹니다. import requestsfrom bs4 import BeautifulSoupres = requests.get('https://v.daum.net/v/20170615203441266')soup = BeautifulSoup(res.content,'html.parser')mydata = soup.find_all('div','layer_body' data-translation='true') mydata.get_text() 이런식으로 연달아서 넣으면 되는건지...답변 부탁드려요^^
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
패턴으로 실습하며 익히기: 네이버 Open API로 크롤링하기
client_id와 client_secret에 제 아이디와 비밀번호를 입력했습니다.오류를 해결하려면 어떻게 해야하나요?
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
영상 3초에 사이트 소개 하실때
ssg.co.kr 이라고 말씀하십니다.(영상에서 연습할 사이트는 cgv) 수업에는 방해되지 않는 부분입니다:))