inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

CoreData Array의 변화에 따른 SwiftUI View 변화 적용(with @Observable Macro)

미해결

[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기

지난번과 동일하게 자꾸, @Observation 을 활용하려다보니 문제가 많이 생기는 것 같습니다. 정확하게 차이를 이해하려고 강의를 돌려봐도 제가 이해하고 있는 바와 다른 점들이 있는 것 같아 질문 드립니다. 강의의 내용은 CoreData 를 다룰 때, fetch 로 불러온 것을 View 로 넘기기위한 변수 var savedEntities: [Fish] 를 만들고, :ObservableObject protocol 을 활용하셨습니다. 이후 View 에서 ViewModel 을 처음 초기화할 때 사용하기 위해서 @Stateobject 를 활용하여 설명을 하셨고요. 그렇다면, Observable Macro 로 Migrating 하기 진행하는데에도 문제가 없다고 생각을 했습니다. 그래서, 아래와 같이 코드를 바꾸어 보았습니다. 그런데 문제는 Viewmodel 에서 정의된 updateFish() method 가 적용되지 않습니다. List 에서 주어진 생선 이름을 tap 했을 경우, "~" 가 추가가 되어야 하는데, func updateFish(fish: Fish){ let currentName = fish.name ?? "" let newName = currentName + "~" fish.name = newName saveData() print("Updating fish name to: \(newName)") } 와 같이 print 를 찍어보았을 때, 디버그 창에서는 print 가 되지만, View 에서는 "~"가 추가되지 않는 모습을 확인할 수 있었습니다. CoreData 의 변화를 감지하지 못하는건지.. 기초강의에서 FruitModel 예시에서는 ObservableObject 대신 Observable Macro 를 적용해도 되었었거든요. 여기서도 fruitArray 이라는 배열을 사용했는데 잘 적용되었습니다. @Observable Macro 를 적용하는데에 있어서 제가 잘못 이해하고 있는 부분이 있을까요? var fruitArray: [FruitModel] 는 View에서 변화를 감지하여 실시간 Update가 가능한 반면 var savedEntities: [Fish] 는 왜 변경되어도 View에서 변화를 감지 하지 못하는지 궁금합니다. 감사합니다.

  • ios
  • swift
  • swiftui
  • iphone-app
ycc3819 댓글 2 좋아요 0 조회수 239

실기시험 항목과 작업형 유형간 설명을 바랍니다.

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 빅분기 실기 작업형 1유형, 2유형, 3유형은 대체 무엇을 묻기 위해 어떤 기준으로 구분한 것인지 그 설명을 듣고 싶습니다. 그래서 무엇을 정리하고 준비해야 하는지에 대한 정리를 실제 작업형 1,2,3유형 문제를 두고 설명해 주시기 바랍니다. 즉, 작업형 문제를 바로 풀기에 앞서 이 문제는 무엇을 묻기 위한 문제로 배경지식으로는 무엇이 필요한 것인지 문제에 출제 문제의 설명(출제 포인트)을 달아 주시기 바랍니다. 빅분기 실기 항목은 데이터수집작업, 전처리작업, 모형구축작업, 모형평가작업이라고 나와 있는데 이것이 각각 작업형 1~3유형에 어디에 해당하는지 설명이 없고, 작업형 1~3유형 또한 데이터수집작업, 전처리작업, 모형구축작업, 모형평가작업 중 어디에 해당하는지 설명이 없습니다. 이러한 내용이 정리되었으면 좋겠습니다. GPT에 물으니 아래와 같은 답변이 나왔는데 맞는지도 검토바랍니다. 빅데이터분석기사 실기 시험에서 작업형 문제는 제1유형, 제2유형, 제3유형 으로 구분됩니다. 각 유형은 문제 해결 방식과 요구되는 기술적 접근법이 다릅니다. 작업형 문제 유형별 특징 작업형 제1유형 (30점, 3문제, 각 10점) 주요 내용 : 데이터 전처리 및 기초적인 데이터 분석 요구되는 기술 : 데이터 정리(결측치 처리, 이상치 제거) 데이터 변환(스케일링, 원-핫 인코딩 등) 간단한 통계 분석(평균, 중위수, 표준편차 등) 예제 : 주어진 데이터셋에서 특정 열의 결측치를 평균값으로 대체하시오. 작업형 제2유형 (40점, 1문제, 가장 배점 높음) 주요 내용 : 머신러닝 모델 구축 및 평가 요구되는 기술 : 데이터셋 분할(훈련/테스트 세트) 머신러닝 알고리즘 적용(랜덤포레스트, XGBoost 등) 모델 성능 평가(정확도, RMSE 등) 예제 : 주어진 데이터를 이용하여 고객 이탈 여부를 예측하는 분류 모델을 구축하고, 정확도를 출력하시오. 작업형 제3유형 (30점, 2문제, 각 15점) 주요 내용 : 데이터 시각화 및 고급 데이터 분석 요구되는 기술 : 데이터 시각화(히스토그램, 박스플롯, 산점도 등) 군집 분석(K-means, DBSCAN 등) 연관 분석(Apriori, FP-Growth 등) 예제 : 주어진 데이터를 이용해 군집 분석을 수행하고, 각 군집의 평균값을 시각화하시오. 시험에서 중요한 점 작업형 제2유형(40점)이 가장 중요 하므로, 모델 구축과 평가 연습이 필수입니다. 시험 환경은 구름IDE 기반 이므로, Python(Pandas, Scikit-learn, Matplotlib 등)에 익숙해져야 합니다. 제1유형과 제3유형은 기본적인 데이터 처리 및 시각화 능력을 평가 하므로, 이를 빠르게 해결할 수 있도록 연습이 필요합니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
강민균 댓글 1 좋아요 0 조회수 166

pandas 2.2.2, xgboost 2.1.3 에러 해결 방법

미해결

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

xgboost 2.1.3 버전의 XGBRegressor 사용시 pandas 2.2.2에서는 pd.util.version이 제거되었으므로 "AttributeError: module 'pandas' has no attribute 'util'"에러 발생하여 xgboost 라이브러리 코드를 수정해야 함 경로: $ANACONDA3_HOME/lib/python3.12/site-packages/xgboost/data.py 수정 후 주피터 재시작 # 기존 def is_pd_sparse_dtype(dtype: PandasDType) -> bool: """Wrapper for testing pandas sparse type.""" import pandas as pd if hasattr(pd.util, "version") and hasattr(pd.util.version, "Version"): Version = pd.util.version.Version if Version(pd.__version__) >= Version("2.1.0"): from pandas import SparseDtype return isinstance(dtype, SparseDtype) from pandas.api.types import is_sparse return is_sparse(dtype) # 변경 def is_pd_sparse_dtype(dtype: PandasDType) -> bool: """Wrapper for testing pandas sparse type.""" import pandas as pd from pandas import SparseDtype return isinstance(dtype, SparseDtype)

  • python
  • 머신러닝
  • pandas
  • kaggle
while_ true_effort 댓글 1 좋아요 0 조회수 269

배포 후 localstorage 지속 저장 안됨

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요! 완강하고 프로젝트 배포 끝내놓고 확인 도중 궁금한 점이 있어 질문 남깁니다. localstorage의 경우 사용자가 직접 삭제하지 않는 한 영구적으로 저장된다고 하였는데 PC(window)에서 새 일기 작성 후 노트북(mac)에서 도메인 접근 시 데이터가 다 삭제되어 있습니다. 또한, 도메인 접근 시 vercel 로그인 창이 현출되고 동일 계정으로 로그인 하면 데이터가 마찬가지로 매번 삭제되어있습니다. PC 브라우저에서 해당 도메인 북마크 후 불러올 경우엔 데이터가 그대로 남아있습니다.. 따라서 현재 PC에서 접근 시 저장된 데이터가 현출되고 노트북에서 접근 시 데이터가 안보이는 상황입니다. 질문 : localstorage에 저장된 데이터는 어디에서든 같은 도메인으로 접속하면 똑같은 데이터가 보여야하는거 아닌가요? 그리고 프로젝트 도메인에 접근하려면 꼭 vercel 로그인이 필요한걸까요? 구글링을 해봐도 정확한 정보를 찾을 수 없어 문의드립니다. 배포는 강의와 동일하게 진행하였습니다. 감사합니다.

  • localStorage
  • react
유정 댓글 2 좋아요 0 조회수 162

apk 및 ipa 파일 자동 인식 기능 문의 건

미해결

쉬운 모바일 테스트 자동화 시작하기 : Appium Studio

Appium Studio 화면에 좌측 중앙 Application 항목에서 apk과 ipa 파일을 자동으로 인식해서 보여주는 것으로 생각되는데 새로운 apk 또는 ipa 파일을 자동 인식 시키려면 어떤 폴더에 파일을 넣어야 하나요?? 그리고 확장자가 apk 또는 ipa 이면 자동 인식되는 건지 아니면 정의된 파일 형식이 있는 건지 문의 드립니다.

  • ios
  • android
  • 소프트웨어-테스트
  • qa(품질보증)
  • appium-studio
nemogun21 댓글 2 좋아요 0 조회수 214

AWS 배포 시 CORS 에러

해결됨

[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스

"[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스강의" 를 수강하고 배포 부분을 이 강의를 수강하고 있는 수강생입니다. 고농축 강의에서 만든 포트폴리오를 aws에서 배포했을때에, CORS 에러가 다음과 같이 나는 문제가 있는데 어떻게 해결해야할까요? 찾아보니 백엔드에서 CORS 를 허용해야하거나 프론트에서 프록시를 사용하라고 되어있는데 어떻게 해결해야할지 모르겠네요

  • react
  • react-native
  • 하이브리드-앱
  • graphql
  • next.js
  • aws
  • cors
aa106206 댓글 2 좋아요 0 조회수 143

03_12_get_max_discount_price를 pop()으로 구현했어요

해결됨

38군데 합격 비법, 2026 코딩테스트 필수 알고리즘

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 어떤 알고리즘을 학습하고 계신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 def get_max_discounted_price(prices, coupons): if prices: prices.sort() if coupons: coupons.sort() discounted_prices = [] while prices and coupons: max_price = prices.pop() max_coupon = coupons.pop() discounted_prices.append(max_price * (100 - max_coupon) / 100) total_sum_prices = sum(discounted_prices) + sum(prices) return total_sum_prices 사실상 같은코드긴 한데, 혹시나해서 검증받고싶어서..

  • python
  • 코딩-테스트
  • 알고리즘
  • data-structure
박가 댓글 2 좋아요 0 조회수 130

페이지 라우팅 동적 경로 질문

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

Home.jsx 에서 import { useSearchParams } from "react-router-dom"; const Home=()=>{ const [params, setParams]=useSearchParams(); console.log(params.get("value")); return <div>Home</div>; }; export default Home; 이렇게 작성했는데 사진과 같이 빨간색 글씨가 뜨는데 어디가 틀린걸까요?? 출력에는 문제가 없습니다

  • javascript
  • react
  • node.js
진성원 댓글 2 좋아요 0 조회수 157

azure storage에 데이터 폴더 업로드

해결됨

실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기

CV 딥러닝을 하려고 하는데요, 데이터를 업로드 하려고 하는데, 폴더째로 업로드가 안되는거같은데 방법이 있을까요?

  • python
  • 딥러닝
  • linux
  • docker
  • azure
  • 가상화
  • mlops
김태연 댓글 3 좋아요 0 조회수 255

react-rounter-dom v7 버전 업데이트

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요! 해당 강의는 react-rounter-dom v6.22 이던데 혹시 v7로 강의 업데이트 예정이실까요? 정환님이 말아주시는 리라돔 v7 강의는 어떨지 하여 기대감에 여쭤봅니다!

  • javascript
  • react
  • node.js
  • react-router-dom
김떡보 댓글 1 좋아요 2 조회수 366

tailwindcss를 vite에서 이용하는 방식이 바뀐것 같습니다.

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

npx init ~~ 를 실행하면 에러가 자꾸 발생해서, 웹사이트를 가보니 다운받는 방식이 아예 바뀐 것 같습니다.

  • react
  • redux
  • node.js
  • 웹앱
  • mongodb
박준우 댓글 2 좋아요 0 조회수 1196

requirements.txt 다운로드가 안끝나요

미해결

내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)

requirements.txt파일을 다운하는데 지금 몇십분째 다운중인 거 같은데 이거 오류인가요?? 무슨 문제가 있는걸까요

  • python
  • 웹-크롤링
권태혁 댓글 2 좋아요 0 조회수 171

새로고침시 404에러가 뜹니다

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

수정페이지, 새일기작성페이지, 등 새로고침하면 404 에러가 뜹니다 ㅠㅠ vercel : https://emotion-diary-ochre-six.vercel.app/ 확인 부탁드립니다 ㅠㅠ

  • javascript
  • react
  • node.js
댓글 2 좋아요 0 조회수 108

Django-Components의 0.128 세팅

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

최신 버전에선 강의의 설정을 적용할 수 없습니다. 아래의 것을 참고하세요. (강사님 이렇게 해도 되긋죠? 구조 제대로 이해 못한채 chatgpt에게 물으면서 했네요 ㅎㅎ; 강의 유지보수 하시기 힘드시겠어요. ) django_components 0.128 설정 1. 폴더명 및 트리구조 변경. myproj/ ├── core/ │ ├── init .py │ ├── apps.py │ ├── src_django_components/ * 폴더명 변경. 하이픈 인식 못함. │ │ ├── init .py │ │ ├── modal_ form.py * 상위로 이동 │ │ ├── modal_form/ │ │ │ ├── modal_form.html │ │ │ ├── modal_form.css │ │ │ ├── modal_form.js ├── mysite/ │ ├── settings.py │ ├── urls.py ├── manage.py 2. settings.py INSTALLED_APPS = [ ..., 'django_components', ] MIDDLEWARE = [ ..., "django_components.middleware.ComponentDependencyMiddleware", ] STATICFILES_FINDERS = [ "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder", "django_components.finders.ComponentsFileSystemFinder", ] TEMPLATES = [ ..., "DIRS": [BASE_DIR / "core" / "src_django_components"], ], "OPTIONS": { "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", ], "builtins": [ "django_components.templatetags.component_tags", # 추가된 부분 ], ..., STATICFILES_DIRS = [BASE_DIR / "core" /"src_django_components"] COMPONENTS = ComponentsSettings( dirs=[ Path(BASE_DIR) / "core" / "src_django_components", ] ) 3. core/ apps.py -modal_form 등록 from django.apps import AppConfig from django_components import component class CoreConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" name = "core" def ready(self): from .src_django_components.modal_form import ModalForm component.registry.register("modal_form", ModalForm) # 설명: ModalForm 클래스를 modal_form 이름으로 등록합니다.

  • react
  • python
  • django
  • web-api
  • htmx
bigseoul 댓글 3 좋아요 0 조회수 265

useRef inputRef.current값이 무조건 bio로만 나오는 현상이 있습니다.

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

const inputRef = useRef() const onSubmit = () => { if(input.name === "" ){ console.log(inputRef.current) inputRef.current.focus() } } return ( <div> <div> <input ref={inputRef} name="name" value={input.name} onChange={onChange} type="text"/> </div> <div> <input ref={inputRef} name="birth" value={input.birth} onChange={onChange} type="date" /> </div> <div> </div> <div> <textarea ref={inputRef} name="bio" value={input.bio} onChange={onChange} > </textarea> </div> <button onClick={onSubmit}>제출</button> </div> ) 위와같은 코드에서 onSubmit함수내 console.log(inputRef.current)를 해보면 무조건 bio만 출력됩니다. 또한 포커스도 어떤 경우에서든 bio가 있는 textarea쪽으로만 포커싱이 됩니다. 어떤 이유에서 이러한 현상이 발생되는지 궁금합니다.

  • javascript
  • react
  • node.js
양진영 댓글 2 좋아요 0 조회수 137

displayName 에 대해 질문있습니다.

해결됨

너네 백엔드 하고 싶은 거 있으면 얼마든지 해 난 괜찮어 왜냐면 나는 파이어베이스가 있어

안녕하세요 강의를 너무 잘 보고 있습니다 강의를 보다가 궁금한 점이 파이어베이스 프로젝트 설정 강의 부분에서 displayName이라는 state를 작성했는데 이건 파이어베이스에 약속된 이름이라고 하셨는데 그럼 닉네임 할때만 이 이름으로 작성하면 되는 건가요?

  • react
  • firebase
부드러운 족제비 댓글 1 좋아요 0 조회수 147

학습 질문입니다.

미해결

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

현재 제가 이해한 내용이 맞는지 궁금하여 질문 남깁니다! mmdetection은 하나의 특정 모델 이름이 아닌 faste-rcnn이나 yolo같은 모델을 사용할때 그들의 아키텍처나 모듈을 효과적으로 관리하는 라이브러리라고 이해하면 되는 것 일까요??

  • python
  • 머신러닝
  • 딥러닝
  • keras
  • tensorflow
  • 컴퓨터-비전
배진영 댓글 2 좋아요 0 조회수 131

sklearn v1.5.1

미해결

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

from sklearn.metrics import root_mean_squared_error from sklearn.metrics import root_mean_squared_log_error y_pred = [11, 22, 33, 44] y_true = [10, 20, 30, 40] print("RMSE: ", root_mean_squared_error(y_true, y_pred)) print("RMSLE: ", root_mean_squared_log_error(y_true, y_pred))

  • python
  • 머신러닝
  • pandas
  • kaggle
while_ true_effort 댓글 1 좋아요 0 조회수 185

웹 크롤링 대상중 웹에디터(smart_editor2) 안의 텍스트를 크롤링하는 방법

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

수업을 적용하며 크롤링 연습을 하고 있는데, 웹 크롤링 대상중 웹에디(smart_editor2) 안의 텍스트를 크롤링하는 방법이 궁금합니다. 셀레니움을 활용하여 적용하고 있는데 웹에디터는 접근이 잘 안되고 접근이 된것 같은데 텍스트가 출력되지 않습니다 어떠헥 해야 할지 모르겠어서 질의 드려요 외부 접근되지 않는 사이트이고 아이디 비번은 마스킹 처리한 코드는 아래와 같습니다. 결국 아래 부분이 문제인것 같은데 에디터 내 텍스트 추출 방법을 몰라 문의드려요 try: driver.switch_to.frame("iframe4dummy") # 🔹 iframe 내부로 이동 # 🔹 iframe 내부에서 특정 클래스("se2_inputarea")를 가진 body 태그 찾기 # 🔹 iframe 내부의 `body` 태그에서 텍스트 가져오기 body = driver.find_element(By.CSS_SELECTOR, "body") answer = body.text.strip() print("✅ HTML 에디터 내용:", answer) # 🔹 다시 원래 페이지로 복귀 driver.switch_to.default_content() except Exception as e: print("❌ iframe 전환 실패 또는 body 태그를 찾을 수 없습니다:", str(e)) from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from urllib.parse import urlencode # URL 파라미터 추가용 import time import random import openpyxl import requests from bs4 import BeautifulSoup from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC newscralling =[] import pyautogui import pyperclip #크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager # #브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service = service) # 웹페이지 해당 주소 주소이동 driver.implicitly_wait(2) #웹페이지가 로딩 될때까지 5초 대기 driver.maximize_window() driver.get("https://OOO") #아이디 입력창 id = driver.find_element(By.CSS_SELECTOR, ".submitLogin.text:nth-of-type(1)") id.click() pyperclip.copy("id") pyautogui.hotkey("ctrl", "v") time.sleep(0.3) # id.send_keys(Keys.TAB) # #비밀번호 입력창 직접입력 # time.sleep(7) pw = driver.find_element(By.CSS_SELECTOR, ".login ul li:nth-of-type(2) input") pw.click() # pw.send_keys("비밀번호") pyperclip.copy("pass") pyautogui.hotkey("ctrl", "v") #로그인 버튼 login_btn = driver.find_element(By.CSS_SELECTOR, ".btnLogin") login_btn.click() time.sleep(1) params = { "counselProcStatus": 2, "page": 1, "pageSize": 2 } #SSL인증 비활성화에 대한 경고메시지 삭제 import urllib3 urllib3.disable_warnings() qna_list_url = "https://OOO"+ urlencode(params) driver.get(qna_list_url) html = driver.page_source soup = BeautifulSoup(html, 'html.parser') articles = soup.select(".boardListStyle table tbody tr") import openpyxl from datetime import datetime wb = openpyxl.Workbook() ws = wb.active ws.title = "온라인상담_접수중" ws.append(["date", "category", "title", "quest", "answer", "man", "status"]) crowling = [] for article in articles: title = article.select_one(".alignLeft a").text date = article.select_one(".boardListStyle table tbody td:nth-of-type(4)").text category = article.select_one(".boardListStyle table tbody td:nth-of-type(2)").text status = article.select_one(".boardListStyle table tbody td:nth-of-type(7)").text link = 'https://OOO/'+ article.select_one(".alignLeft a").attrs['href'] title_link = f'=HyPERLINK("{link}", "{title}")' #상세 페이지 요청 driver.get(link) time.sleep(2) # 페이지 로딩 대기 detail_html = driver.page_source detail_soup = BeautifulSoup(detail_html, 'html.parser') quest = detail_soup.select_one(".con_txt").text try: driver.switch_to.frame("iframe4dummy") # 🔹 iframe 내부로 이동 # 🔹 iframe 내부에서 특정 클래스("se2_inputarea")를 가진 body 태그 찾기 # 🔹 iframe 내부의 `body` 태그에서 텍스트 가져오기 body = driver.find_element(By.CSS_SELECTOR, "body") answer = body.text.strip() print("✅ HTML 에디터 내용:", answer) # 🔹 다시 원래 페이지로 복귀 driver.switch_to.default_content() except Exception as e: print("❌ iframe 전환 실패 또는 body 태그를 찾을 수 없습니다:", str(e)) #answer = detail_soup.select_one(".se2_input_area.husky_seditor_editing_area_container iframe").text man = detail_soup.find('th', string="작성자").find_next_sibling().text crowling = ws.append([date, category, title, quest, answer, man, status]) driver.back() # 브라우저에서 '뒤로 가기' 실행 print(date, category, title, quest, answer, man, status) now = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"온라인상담_{now}.xlsx" wb.save(filename)

  • python
  • 웹-크롤링
  • 웹에디터
민소리 댓글 1 좋아요 0 조회수 161

인기 태그

인프런 TOP Writers

주간 인기글