실시간 트렌드 홈페이지 개발(파이썬 크롤링 + Flask)
실시간 트렌드 홈페이지 개발(파이썬 크롤링 + Flask)
수강정보
(4개의 수강평)
101명의 수강생
스킬태그 #Python, #웹 크롤링
13,200원
지식공유자 : 개복치개발
16회 수업 · 총 1시간 44분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 초급
ping9 프로필

네이버 쇼핑 핫딜 크롤링 문제 ping9 28일 전
네이버 쇼핑 핫딜 데이터를 크롤링하는 과정에서 강의에서는 핫딜 버튼의 ClassName이 '_productSet_hotdeal'로 되어있어 driver.find_element_by_class_name("_productSet_hotdeal").click() 코드를 사용하여 버튼을 클릭했지만, 현재는 네이버 쇼핑 소스가 변경되어 모든 버튼의 ClassName이 'subFilter_filter__3Y-uy'로 되어있어 driver.find_element_by_css_selector("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > div.seller_filter_area > ul > li:nth-child(5) > button").click() 코드를 사용하여 버튼을 클릭하였습니다. 문제는, 버튼 클릭까지는 문제 없이 진행 되었지만 핫딜 페이지의 데이터를 출력하는 과정에서 핫딜 데이터를 출력하는 것이 아닌 기존의 데이터를 출력합니다. 어떻게 해결해야 될까요? - app.py from flask import Flask, render_template, request app = Flask(__name__) # crawling module import import requests from bs4 import BeautifulSoup # excel module import from openpyxl import Workbook write_wb = Workbook() write_ws = write_wb.active # 셀리니움 사용 전 크롬 웹드라이버 설치 # Web automation module import from selenium import webdriver @app.route("/") def hello_world(): return render_template("index.html") @app.route("/result", methods=["POST"]) def result(): keyword = request.form['input1'] page = request.form['input2'] daum_list = [] # crawling for i in range(1, int(page) + 1): req = requests.get("https://search.daum.net/search?nil_suggest=btn&w=news&DA=PGD&cluster=y&q=" + keyword + "&p=" + str(i)) soup = BeautifulSoup(req.text, "html.parser") for i in soup.find_all("a", class_="f_link_b"): daum_list.append(i.text) # excel for i in range(1, len(daum_list) + 1): write_ws.cell(i, 1, daum_list[i-1]) write_wb.save("static/result.xlsx") return render_template("result.html", daum_list = daum_list) @app.route('/naver_shopping') def naver_shopping(): driver = webdriver.Chrome('./chromedriver.exe') driver.implicitly_wait(3) driver.get("https://search.shopping.naver.com/search/all?query=%EA%B3%B5%EA%B8%B0%EC%B2%AD%EC%A0%95%EA%B8%B0&frm=NVSHATC&prevQuery=%EA%B3%B5%EA%B8%B0%EC%B2%AD%EC%A0%95%EA%B8%B0") soup = BeautifulSoup(driver.page_source, "html.parser") for i in soup.select("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > ul > div > div > li"): print(i.find("a", class_="basicList_link__1MaTN").text) print("---------------------------") driver.find_element_by_css_selector("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > div.seller_filter_area > ul > li:nth-child(5) > button").click() soup = BeautifulSoup(driver.page_source, 'html.parser') for i in soup.select("#__next > div > div.container > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > ul > div > div > li"): # 핫딜 페이지로 정상적으로 이동되어 있지만 기존의 페이지의 데이터를 출력함 print(i.find("a", class_="basicList_link__1MaTN").text) return render_template("shopping.html") if __name__ == "__main__": app.run() - 실행결과

3
KIO 프로필

flask에서 html 연결이 안됩니다ㅠㅜ KIO 2달 전
저도 아래의 질문을 보고 똑같이 스펠링도 확인하고, 컴퓨터도 꺼보고, 파일구조도 같이 해보고 햇는데 연결이 어려워서 다음껄 못 따라가고 있습니다. 가장 처음에 했던 헬로우월드만 계속 나오고 왜 index.html이 안나오는지를 모르겟습니다ㅠㅜ 검색도 해봤는데 그에 대해선 제가 검색능력이 부족한지 못찾아서 이렇게 질문 올리게 되었습니다. 확인하면 답변 부탁드릴게요. app.py from flask import Flask, render_template app = Flask(__name__) import requests from bs4 import BeautifulSoup @app.route('/') def hello(): req = requests.get('https://news.daum.net/ranking/age/') soup = BeautifulSoup(req.text, 'html.parser') list_daum = [] for i in soup.select("#mArticle > div.rank_news > div.item_age.item_20s > div.rank_female > ol > li"): list_daum.append(i.find("a").text) return render_template("index.html", daum = list_daum) @app.route('/about') def about(): return "about World!" if __name__ == '__main__': app.run() index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> 여기는 html영역! <a href="/about">테스트</a> <ul> {% for i in daum %} <li>{{i}}</li> {% endfor %} </ul> </div> </body> </html> 파일 구조 실행화면

1
shine01035857458 프로필

index.html 부분을 인식을 못하네요 shine01035857458 3달 전
index.html은 만들어진 상태입니다.

5
shine01035857458 프로필

저는 네이버 인기 검색어를 가져올려고하는데 못뽑아 오네요 혹시 네이버 보안 문제일까요??? shine01035857458 3달 전
저는 네이버 인기 검색어를 가져올려고하는데 못뽑아 오네요 혹시 네이버 보안 문제일까요???

1
shine01035857458 프로필

Flask 실행하면 웹사이트 127.0.0.1:5000 포트 부분에서 404에러가 뜨네요 어떻게 해야되나요?? shine01035857458 3달 전

6
shine01035857458 프로필

저는 이렇게 venv부분이 다른 색으로 뜨는데 무슨 차이인가요?? shine01035857458 3달 전

1
shine01035857458 프로필

윈도우 PyCharm 환경 설정들 처음부터 알려주세요 shine01035857458 3달 전
help me

1
매일한끼 One meal every day 프로필

실시간 매일한끼 One meal every day 3달 전
출력한 결과값에 대해서 실시간으로 자동업데이트는 어떻게하나요? 새로고침없이요!

1
wonwoo 프로필

아톰에서 실행 wonwoo 3달 전
안녕하세요. 아톰에서 app.py 를 실행시키고  127.0.0.1:5000/  접속하면 리턴값이 나타납니다. 그런데 리턴값을 변경하면 예를 들어 "hi world" 해당 부분이 변경되지가 않습니다. 127.0.0.1:5000/ 에 접속해도 "hello world"가 그대로 유지됩니다. 다만 제가 app.run(host="0.0.0.0", port = "9100") 이렇게 별도로 포트번호를 지정하고 접속하면 수정사항이 반영됩니다. 127.0.0.1:5000 접속시 출력내용이 바뀌지 않는 이유가 있을까요?? 쿠키등의 문제일까 싶어서 다른 브라우저에서 접속해도 동일하네요~

1
감스트의웃음노예 프로필

실행결과가 이상합니다 실시간 순위 1위만 뜨네요 감스트의웃음노예 4달 전
파이썬 소스입니다 from flask import Flask, render_templateapp = Flask(__name__)import crawlingimport requestsfrom bs4 import BeautifulSoup@app.route('/')def hello(): list_naver = crawling.naver() list_daum = crawling.daum() return render_template("index.html", naver = list_naver, daum = list_daum )@app.route('/about')def about(): return "여기는 어바웃입니다."if __name__ == '__main__': app.run()crawling 파일소스입니다 import requestsfrom bs4 import BeautifulSoupdef naver(): req = requests.get("https://comic.naver.com/webtoon/weekday.nhn") soup = BeautifulSoup(req.text, 'html.parser') list_naver = [] for i in soup.select("#realTimeRankFavorite > li"): list_naver.append(i.find("a").text) return list_naverdef daum(): req = requests.get("https://www.myktoon.com/web/league/webtoon/list.kt") soup = BeautifulSoup(req.text, 'html.parser') list_daum = [] for i in soup.select("#reagToon > ol > li"): list_daum.append(i.find("h4").text) return list_daum

6
이연화 프로필

코드가 잘안보이는건 wifi환경이라 그런건가요 이연화 4달 전

1
방파제 프로필

크롤링 결과를 html 페이지에서 출력할 수 없습니다. 방파제 4달 전
리스트가 아닌 딕셔너리라 그런 건지 확인해보고자 리스트로 출력 해봤는데 둘 다 인식을 못하는 것 같습니다. result.html 에서 그냥 <label></label>안에 들어있는 글자는 출력을 하는데, {% for i in result %} ... {% endfor %} 이 구간을 출력을 못하는 것 같습니다. 해결 방안이 있을까요?

2
yoon 프로필

크롤링 결과가 다른 페이지가 아닌 현재 페이지에 나타나게 하려면 어떻게 해야 하나요? yoon 5달 전
개발자님, 강의 정말 잘 듣고 있습니다^^ 강의 중 궁금한 부분이 생겨서요. 혹시 크롤링 결과를 다른 페이지가 아닌, 현재 페이지의 검색버튼 밑에 나오게 하려면 어떻게 해야 하나요? 궁금합니다.

2
조유빈 프로필

크롤링 오류입니다; 조유빈 6달 전
안녕하세요~ 강의 따라하며 아래코드처럼 실행하면 빈값이 출력됩니다; 제가 어떤 부분을 수정해야 할까요;

2
reny koo 프로필

저에게 딱 필요했던 강의 였어요~! reny koo 7달 전
우선 감사 인사를드립니다. 딱 필요한 절차에 대해서 공부할수 있는 기회가 되었습니다.흥미를 갖고 더 열심히 공부해 나갈 수 있을것 같습니다. 한가지 질문을 드립니다. 마지막 수업인  스크롤 + 크롤링 후 웹페이지에 보여주는 코드를 실행 하면 웹페이지에서 네이버 쇼핑으로 넘어가면서.. Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 다음과 같은 오류를 마주하게 되는데요. 너무 많은 요청이라는 것인데 문제는 웹페이지와 연동 없이(플라스크 사용안하고) 그냥 스크롤+ 크롤링 코드만 빼서 터미널에 출력하는 형태로 하면 아주 잘 됩니다. 그리고 예제보다 더 과도한 요청을 하는 크롤링도 잘 작동 합니다. 웹페이지에 보여주는것에 문제가 있는것 같습니다. 뭔가 오타가 있나 싶어서 강사님 블로그에서 다운 받은 후 실행을 시켜봐도 동일한 오류가 발생 됩니다. 이부분을 어떻게 해결 하면 좋을지 궁금 합니다. 감사합니다.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스