묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
네이버쇼핑(닭가슴살) 크롤링
안녕하세요 스타트코딩님! 수업 잘 듣고 있는 학생입니다. 질문이 있어 글 남깁니다.수업 듣기 전에 혼자 해볼 때 저는 soup를 사용하지 않고 find_element를 사용해서 이렇게 코드를 작성했는데 뭐가 다른 걸까요?from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pandas as pd driver = webdriver.Chrome() driver.get('https://search.shopping.naver.com/search/all?query=%EB%8B%AD%EA%B0%80%EC%8A%B4%EC%82%B4') # 스크롤 전 높이 last_height = driver.execute_script('return document.body.scrollHeight') while True: # 스크롤 끝까지 내리기 driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 대기 시간 줘야됨 !!! time.sleep(1) # 스크롤 후 높이 after_height = driver.execute_script('return document.body.scrollHeight') # 비교 (if, break) if last_height == after_height: break # 스크롤 전 높이 업데이트 last_height = after_height products = driver.find_elements(By.CSS_SELECTOR, '.product_item__MDtDF') data = [] for product in products: name = product.find_element(By.CSS_SELECTOR, '.product_title__Mmw2K').text link = product.find_element(By.CSS_SELECTOR, '.product_title__Mmw2K > a').get_attribute('href') price = product.find_element(By.CSS_SELECTOR, '.price_num__S2p_v').text.split('원')[0].replace(',', '') data.append([name, link, int(price)]) df = pd.DataFrame(data, columns = ['상품명', '상세페이지링크', '가격']) df.to_excel('네이버쇼핑.xlsx')
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
선생님 혹시 자바 공부나 개발에 대한 책 추천 해주실 수 있으십니까
현재 나온 자바 강의 모두 결제했지만 책으로도 병행하고 싶어서 여쭤봅니다 자바의 정석 같은 기본서보다 좀 더 깊게 들어갈 수 있는 책 추천 해주실 수 있으십니까
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
혹시 백엔드서버를 종료해도 에러가 뜨지안고 정상가동되면 어떻게해야하나요?
혹시 백엔드서버를 종료해도 에러가 뜨지안고 정상가동되면 어떻게해야하나요?.. 당황스럽네요 하하 아 캐싱문제네요 강제 새로고침으로 해결했습니다.감사합니다. 음 아니네요 여전히 이상하네요..전 이상하게 Footer에서 먼저 에러가 나네요.force cache가 되어있음에도.. 왜그럴까요?ㅜㅜ
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
변수명에 $ 허용하나요?
변수명에 달러표시나 다른 특수문자를 허용하신다고 했는데 _은 오류가 뜨지 않는데 달러표시는 자꾸 오류가 뜨네요 어떤 것이 문제일까요...ㅜㅜ
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
강의 2.8을 듣고 있는 도중 use client에 대해서
use client 가 선언되지 않아도 searchable-layout.tsx 에서 useEffect 가 동작 하는 이유는 무엇인가요? 제가 알기론 이런 클라이언트사이드 훅들은 use client를 최상위에 선언해줘야 동작한다고 이해했었습니다..
-
해결됨우리 엄마도 할 수 있는 머신러닝 (기초이론)
교안 강의자료
강의자료는 제공안되나요? 너무 잘 정리되어있어서 보면서 코딩하면 효율적일것같아서여.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
스위치를 눌렀다가 뗄때 인터럽트가 걸리는 문제
스위치를 누를 때만 인터럽트가 발생해야 하는데 스위치를 눌렀다가 뗐을 때도 인터럽트가 발생을 합니다.BUTTON_GAP의 수치를 바꿔도 문제가 해결되지 않았습니다.ioc에서도 falling edge로 설정을 했음에도 문제가 계속 발생합니다.부품도 바꿔가면서 사용했지만 문제가 사라지지 않았습니다.제가 놓친 부분이 무엇인지 알려주시면 감사하겠습니다...
-
미해결무작정 따라하며 원리를 깨우치는 웹 해킹 : WebGoat 편
refresh/newToken 응답 Unauthorized
POST /WebGoat/JWT/refresh/newToken HTTP/1.1Host: 192.168.100.1:5555User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36Accept: /Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateContent-Type: application/jsonAuthorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE1MjYxMzE0MTEsImV4cCI6MTUyNjIxNzgxMSwiYWRtaW4iOiJmYWxzZSIsInVzZXIiOiJUb20ifQ.DCoaq9zQkyDH25EcVWKcdbyVfUL4c9D4jRvsqOqvi9iAd4QuqmKcchfbU8FNzeBNF9tLeFXHZLU4yRkq-bjm7QX-Requested-With: XMLHttpRequestOrigin: http://192.168.100.1:5555Connection: closeReferer: http://192.168.100.1:5555/WebGoat/start.mvcCookie: JSESSIONID=5z17E5pdzPY2xeGH3N1k6TigDBCtpR220_21MufTContent-Length: 50{ "resfresh_token" : "GgHHRVjjrGlFmhXwhmof"} 응답HTTP/1.1 401 UnauthorizedConnection: closeX-XSS-Protection: 1; mode=blockX-Content-Type-Options: nosniffX-Frame-Options: DENYContent-Length: 0Date: Mon, 13 Jan 2025 08:04:14 GMT 톰의 액세스 토큰이 아니라 Jerry의 것으로 해도 401 에러가 뜹니다401 에러가 뜨는 걸까요?
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
axios post 사용할때 페이지 새로고침 문제
Home.jsx이렇게 하고 import { useEffect, useState } from 'react'; import HomeDataLength from '../components/HomeDataLength.jsx'; import HomeSearch from '../components/HomeSearch.jsx'; import CanvasItemList from '../components/CanvasItemList.jsx'; import SearchBar from '../components/SearchBar.jsx'; import GridFlexBTN from '../components/GridFlexBTN.jsx'; import { deleteHome, createHome, getHome } from '../api/home.js'; import { v4 as uuid } from 'uuid'; import dayjs from 'dayjs'; export default function Home() { const [isGrid, setIsGrid] = useState(true); const [search, setSearch] = useState(''); const [data, setData] = useState([]); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(false); useEffect(() => { const api = async () => { setIsLoading(true); setError(false); try { const response = await getHome(''); setData(response.data); } catch (err) { setError(err); } finally { setIsLoading(false); } }; api(); }, []); const [isLoadingCreate, setIsLoadingCreate] = useState(false); const [createError, setCreateError] = useState(false); // 등록버튼 누르면 새로운 데이터 저장 const handleNewCreate = async () => { // setIsLoadingCreate(true); // setCreateError(false); // try { const id = uuid(); const newCreate = { id, date: dayjs().format('YYYY-MM-DD HH:mm:ss'), text: `${id.substring(0, 4)}-테스트`, category: '테스트', }; await createHome(newCreate); console.log(123); // const res = await getHome(); // setData(res.data); // } catch (err) { // setCreateError(err); // console.log(createError, 'createError'); // } finally { // setIsLoadingCreate(false); // } }; const handleText = text => { const searchData = data.filter(d => d.text.toLowerCase().includes(text.toLowerCase()), ); if (searchData.length === 0) { setSearch(null); } else { setSearch(searchData); } }; const handleDelete = async id => { // const newData = data.filter(d => d.id !== id); // setData(newData); await deleteHome(id); }; return ( <> <> <div className="flex flex-col md:flex-row justify-between items-center"> <button className="hover:bg-blue-400 bg-blue-500 text-white rounded-md text-bold p-3" onClick={handleNewCreate} > 등록하기 </button> {isLoadingCreate && <p>등록중</p>} {createError && <p>{createError}</p>} <SearchBar handleText={handleText} /> <GridFlexBTN setIsGrid={setIsGrid} isGrid={isGrid} /> </div> <HomeDataLength data={data} error={error} isLoading={isLoading} /> <HomeSearch search={search} /> {!isLoading && !error && ( <CanvasItemList data={data || []} search={search} isGrid={isGrid} handleDelete={handleDelete} /> )} </> </> ); } home.js 파일은 아래와 같은 상태이면 import { home } from './http'; // 목록 조회 export const getHome = () => { return home.get('/'); }; // 등록 export const createHome = newCreate => { try { console.log('ㅅㅣ작'); } catch (error) { console.log('에러'); } finally { console.log('종료'); } // debugger; return home.post('/', newCreate); }; // 수정 // 삭제 export const deleteHome = id => { return home.post('/', id); }; db는 server-json을 사용하고 있습니다.그런데 get 요청을 할때는 잘 작동하는데post로 등록하거나 삭제할때는 db에 정상 등록, 삭제되는데 화면이 새로고침이 되버리는 상태입니다. Home.jsx 화면이 리렌더링이 되도록 하고싶은데 새로고침은 왜 그런지 모르겠습니다. postman으로도 post로 db에 저장했는데 리액트 화면이 자동으로 새로고침 되버립니다. 구글링도 해봤는데 해결이 안되서 문의드립니다.혹시나 해서 db.json이 변경되면 화면도 변경될까 싶어서 을 db.json --watch로만 해보고 --watch도 없애봤는데 안됩니다. const handleNewCreate = async () => { console.log('시작1'); const id = uuid(); const newCreate = { id, date: dayjs().format('YYYY-MM-DD HH:mm:ss'), text: `${id.substring(0, 4)}-테스트`, category: '테스트', }; const data = await createHome(newCreate); console.log(data, 'data'); console.log('시작2'); debugger; };debugger를 사용했을때이렇게 데이터 나오는데 디버거 끄는 순간 바로 화면이 새로고침 되고 있습니다. 그리고 콘솔창도 새창으로 이전 내역이 다 사라지는 상태입니다.
-
해결됨AB 테스트 실무자 완벽 가이드
샘플 사이즈 문의
안녕하세요, minimum 샘플 사이즈 정하는 부분에서 질문드립니다.online 플랫폼의 경우 base-metric과 expected-metric에 CVR, CTR 이 적용이 가능한데offline 매장 같은 경우는 base-metric과 expected-metric이 매출이 될 것 같은데맞을까요? (프로모션, 캠페인은 아니고, 추가 제품공급 (다각화) 입니다) 계산해보면 p=(p1+p2)/2, variance = p(1-p) 공식에 적용해서 계산해보면매출 5% 상승으로 잡고 정규화해서 1.0 과 1.05으로 할경우계속 n 값이 마이너스 값이 나오네요. 다른 방식으로 적용해야될까요?문의드립니다.감사합니다.
-
미해결위니브월드 탐험대 - 게임으로 배우는 파이썬
위니브월드 맞게 코드를 짠거같은데 왜 오답일까요?
mission_start()move() pick() move() pick() move() pick() move() pick() turn_left() turn_left() repeat(2, move) repeat(2, move) turn_left() turn_left() say('hello, world!') mission_end()mission_start() move() pick() move() pick() move() pick() move() pick() turn_left() turn_left() repeat(2, move) repeat(2, move) turn_left() turn_left() say('hello, world!') mission_end() 이렇게 제출하였는데 오답이라네요ㅠㅠ왜그런거죠?
-
미해결대세는 쿠버네티스 (초급~중급편)
파드 생성 실패
실습 진행중에 파드를 만들려고 하니깐 이런 에러가 뜨네요 ..
-
미해결빅데이터/텍스트마이닝 분석법 (LDA,BERTtopic,감성분석,CONCOR with ChatGPT)
pyLDAvis 오류
제공해주신 idavis 오류 파일을 실행하면 시각화가 되는데, 기존파일에 내용을 붙여서 실행하면 안되는 이유는 뭘까요?오류 내용 첨부해 드립니다.
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
BNO080 주기 확인
안녕하세요 강사님.오실로스코프가 없어서 BNO080의 output주기가 400HZ인지 확인하기 위해서 timer를 사용했습니다.84MHZ timer의 프리스케일러 값을 83으로 설정하여 카운트 레지스터 값이 1MHZ의 속도로 증가하도록 만들었고, 그렇다면 한주기가 400HZ가 되기 위해서 타이머의 카운트 레지스터 값이 2500이 나오길 기대했지만 135라는 값이 나왔습니다. 무엇때문에 이런 결과가 나왔는지 궁금합니다. 코드와 출력화면을 첨부합니다.
-
미해결대세는 쿠버네티스 (Helm편)
프로젝트에서 Helm Chart 관리 및 작성에 대하여
안녕하세요, 제가 제조업쪽이라 서비스가 원활한 회사에서 근무를 하고 있지 않아서, 일반적인 IT 업계에선 Helm Chart 관리를 어떻게 하는지 궁금해서 문의드리게 되었습니다.일반적으로 적당한 프로젝트를 배포할 때 Front End 와 Back End Application 두가지 나눠서 배포한다고 해보겠습니다.Vue 와 Spring Boot 를 사용하는데, 이 때 프로젝트 루트 경로에 예제에서 관리한 바와 같이 deploy 폴더를 만들어서 관리를 하도록 했습니다.이 때, 기존 구성상 Ingress 가 다음과 같이 되어 있습니다. rules: - host: hello.foo.com http: paths: - path: / pathType: Prefix backend: service: name: svc-fe port: number: 8080 - path: /api pathType: Prefix backend: service: name: svc-be port: number: 80위와같이 되어 있을 경우, 이 ingress 는 두 영역 모두 의존성이 있습니다. fe 패키지에서 관리해야 할지, be 패키지에서 관리해야 할지 의문이 들었습니다. 아니면 Helm 은 IaC 도구로서 이며 원하는 인프라를 빠르게 셋업해줘야 하기 때문에 FE, BE 모두 한번에 관리하는게 맞는걸까요?그렇다면 이런 경우에는 FE, BE 깃 레포가 아닌, 별도의 Helm Chart 레포를 만들어서 관리를 하는 걸까요?
-
해결됨CloudNet@ - Amazon EKS 기본 강의
[실습] Service[NLB] 배포 및 확인의 aws-loadbalancer-controller 설치 및 실습 시 트러블슈팅
https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy.json에서 "elasticloadbalancing:DescribeListenerCertificates", 윗줄에 "elasticloadbalancing:DescribeLoadBalancerAttributes"그러지 않으면 targetgroupbinding 이 만들어지지 않는것 같습니다.분명 대상 그룹도 만들어졌는데 kubernetes resource 로 만들어져있지 않아서 중간에 오류가 생겼거니 했습니다.kubectl describe svc svc-nlb-ip-type 로 오류 디버깅시 elasticloadbalancing:DescribeLoadBalancerAttributes 가 포함되지 않아 403 에러가 났다고 합니다. 처음 가이드에서는 모두 정상동작했을텐데, 이것이 시간이 지나 AWS 가 버전이 업데이트되며 생긴 변화인것일까요?혹은 제 환경만 이상한 것일까요?ㅎㅎ;혹은 추가 가이드가 있는데 제가 놓친것일까요?ㅎㅎ;
-
미해결FreeRTOS 프로그래밍
timebase source를 systick timer로 하신 이유
timebase source를 왜 systick timer로 하신 이유가 궁금합니다. 보통 새로운 stm32 프로젝트에서 FreeRTOS를 추가하면 꼭 timebase를 systick timer가 아닌 다른 timer로 설정하라는 경고가 나오는데 왜 systick timer로 하신 건가요?
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
1강 리눅스 환경 구축 중 문제가 생겼습니다.
1강 리눅스 환경 구축 중 ubuntu 22.04.5 LTS 클릭할 시, 이름/비번 창이 아닌 이런 화면이 뜹니다. 어떻게 해결해야 할까요...?
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
파드 : crashLoopBackoff
[5:00] 분 쯤에 manifest 파일들을 배포한후 get pods 했더니 파드가 정상적으로 작동이 안되더라구요 어떻게 하나요..?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 문의
안녕하세요SAA자격증을 준비하며 강의 내용이 많은 도움이 되었습니다.Score가 부족해 재 응시 준비 중에 남은 수강 기간이 짧아 수강기간 연장 부탁 드립니다.감사합니다.