묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
첫째 페이지 크롤링 오류
import requests from bs4 import BeautifulSoup main_url = "https://www.coupang.com/np/search?component=&q=%EA%B2%8C%EC%9D%B4%EB%B0%8D+%EB%A7%88%EC%9A%B0%EC%8A%A4&channel=user" header = { 'Host': 'www.coupang.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3',} response = requests.get(main_url, headers = header) html = response.text soup = BeautifulSoup(html, 'html.parser') links = soup.select("a.search-product-link") for link in links: sub_url = "https://www.coupang.com/" + link.attrs['href'] response = requests.get(sub_url,headers = header) html = response.text sub_soup = BeautifulSoup(html,'html.parser') #브랜드명 #중고상품 예외처리 try: #아래 태그를 찾고 brand = soup.select_one("a.prod-brand-name") except:# 없으면 아래처럼 비우기 brand = "" #상품명 name = soup.select_one("h2.prod-buy-header__title") #가격 price = soup.select_one("span.total-price > strong") print(brand,name,price) 이렇게 작성 하고 실행 시키니 아무일도 일어나지 않았습니다. 그래서 ctrl + F5 로 실행 시키니 크롤링 된 데이터가 모두 none 으로 크롤링 되네요 ..
-
미해결[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)
ViewModel 값
ViewModel을 이용하면 화면이 전환되며 fragment에서도 View가 destroy가 되어도 값이 유지가 된다고 보이는데 Fragment 2개를 전환시킬 때는 왜 유지가 되지는 않나요..? 강좌 챕터 View / ViewModel과 LiveData 사용해보기의 Fragment LiveData / LifeCycleOwner 부분입니다.
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
답변달기 Group Order 가 올라가지 않아요...
오라클 PROCEDURE SPEC부분은 PROCEDURE insertBorderReply ( In_borderId IN VARCHAR2, In_userId IN VARCHAR2, In_userIp IN VARCHAR2, In_title IN VARCHAR2, In_mytextarea IN VARCHAR2 ); 오라클 PROCEDURE BODY부분을 PROCEDURE insertBorderReply ( In_borderId IN VARCHAR2, In_userId IN VARCHAR2, In_userIp IN VARCHAR2, In_title IN VARCHAR2, In_mytextarea IN VARCHAR2 ) IS lo_group_num NUMBER(10,0); lo_group_order NUMBER(10,0); lo_group_tab NUMBER(10,0); BEGIN /*답글달고자하는 글의 데이터를 로컬변수에 저장.*/ SELECT group_num, group_order, group_tab INTO lo_group_num, lo_group_order, lo_group_tab FROM EGOV_BBS WHERE BORDERID = In_borderId; /*기존글 형식을 맞추기위해 업데이트*/ UPDATE EGOV_BBS set group_order = group_order + 1 WHERE group_num = lo_group_num AND group_order > lo_group_order; IF(lo_group_order = 0) THEN SELECT MAX(group_order) INTO lo_group_order FROM EGOV_BBS WHERE group_num = lo_group_num; END IF; /*답글달고자하는 글의 데이터를 로컬변수에 저장.*/ INSERT INTO EGOV_BBS ( borderid, bordertype, group_num, parentid, group_order, group_tab, userid, nickname, writerip, editid, editip, title, bordertext, seecount, filename, filetype, fileurl, replycount ) VALUES ( borderid_seq.nextval, '0', lo_group_num, In_borderId, lo_group_order+1, lo_group_tab+1, In_userId, In_userId, In_userIp, '', '', In_title, In_mytextarea, 0, '', '', '', 0 ); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('오류발생'); DBMS_OUTPUT.PUT_LINE('에러내용:'||SQLERRM); DBMS_OUTPUT.PUT_LINE('발생위치:'||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); END insertBorderReply; 이렇게 작성했습니다.위 사진과 같이 그룹 오더가 늘어나지 않습니다. borderReplyReq.do 는 다음과 같이 작성했고@RequestMapping(value="/borderReplyReq.do") public String borderReplyReq(HttpServletRequest request, ModelMap model) throws Exception { HashMap<String,Object> paramMap = new HashMap<String,Object>(); String title = request.getParameter("title").toString(); String mytextarea = request.getParameter("mytextarea").toString(); String userId = "" ; String no = request.getParameter("no").toString(); if(title.length()>15) { return "redirect:/borderList.do"; } //2000자 잇상이면 else if(mytextarea.length()>2000) { return "redirect:/borderList.do"; } // Session에 User ID 가 저장이 안되어 있다면? else if(request.getSession().getAttribute("USER_ID")==null) { request.getSession().invalidate(); return "redirect:/login.do"; } else // 사용자가 로그인을 했을 때, { userId = request.getSession().getAttribute("USER_ID").toString(); paramMap.put("boderid", no); paramMap.put("userId", userId); paramMap.put("userIp", request.getRemoteAddr()); paramMap.put("title", title); paramMap.put("mytextarea", mytextarea); } borderService.insertBorderReply(paramMap); System.out.println(paramMap); return "redirect:/borderList.do"; } 마지막에 System.out.println(paramMap)은데이터가 잘 찍혀서 들어간걸 확인 할 수 있었습니다. 근데 게시판에 답글이 생기지 않아요,,,
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
DFS, BFS 풀이 차이점
import java.util.*; import java.io.*; /* 다음과 같이 여러 단위의 동전들이 주어져 있을때 거스름돈을 가장 적은 수의 동전으로 교환해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. 입력 : 첫 번째 줄에는 동전의 종류개수 N(1<=N<=12)이 주어진다. 두 번째 줄에는 N개의 동전의 종류가 주어지고, 그 다음줄에 거슬러 줄 금액 M(1<=M<=500)이 주어진다.각 동전의 종류는 100원을 넘지 않는다. 출력 : 첫 번째 줄에 거슬러 줄 동전의 최소개수를 출력한다. ex. 3 1 2 5 15 -> 3 ( 출력 설명 : 5 5 5 동전 3개로 거슬러 줄 수 있다. ) */ public class P05_동전교환 { static int N, total, answer; static Integer[] coins; public static void main(String[] args) throws Exception { // 초기 세팅 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); coins = new Integer[N]; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i=0; i<N; i++) { coins[i] = Integer.parseInt(st.nextToken()); } total = Integer.parseInt(br.readLine()); // 로직 Arrays.sort(coins, Collections.reverseOrder()); // coins 내림차순 정렬 (int[] 배열이 아닌 Integer[] 배열이여야 함 !!) // 방법1. BFS // BFS(); // 방법2. DFS answer = total; DFS(0, 0); // 출력 System.out.println(answer); } public static void BFS() { Queue<Integer> q = new LinkedList<>(); for (int i=0; i<N; i++) { q.offer(coins[i]); } int count = 1; while (true) { int size = q.size(); for (int i=0; i<size; i++) { int tmp = q.poll(); for (int j=0; j<N; j++) { int next = tmp + coins[j]; if (next == total) { answer = count + 1; return; } q.offer(next); } } count++; } } public static void DFS(int count, int sum) { if (sum > total || count >= answer) { return; } if (sum == total) { answer = Math.min(answer, count); } else { for (int i=0; i<N; i++) { DFS(count+1, sum+coins[i]); } } } } 처음에 혼자 풀 때 BFS 문제인 것 같아 BFS로 풀었고, 강의보고 나서 다시 DFS로 풀어봤는데DFS와 BFS 풀이 방법 중 어느 것이 더 좋은 방법인가요 ?성능면에서 DFS와 BFS 중 어떤 것이 더 좋은지 궁금합니다 .. !
-
미해결홍정모의 따라하며 배우는 C++
8:14부근 코드 질문입니다.
if문 조건부에 constant 1을 넣어서 무조건 실행되게 하면, if문 전 main 함수에 의해 int x=10이 설정되고 cin으로 임의 입력값을 받는데요.이 다음에 if문이 실행되면, 또다시 int x =5를 선언하는데 왜 에러가 안나나요? 같은 변수명 x를 중복선언하는 것 아닌가요?if문 안의 실행부가 x=5이면 이전에 선언해놨던 x에 값만 5로 대입하는 것으로 이해가 되는데요.새로 int x를 또 선언하는데 중복에러가 안나는 이유가 궁금합니다. 아래는 그 코드입니다. #include <iostream>using namespace std;int main() { int x=10; cin >> x; if (x > 10) cout << x << " is greater than 10" << endl; else cout << x << " is not greater than 10" << endl; cout << endl; if (1) int x = 5; else int x = 6; cout << x << endl; return 0;}
-
미해결
맥 사용중인데 vscode에서만 오류가 발생합니다
터미널에서도 다 잘 작동하는 코드들을 vscode로 가져가면 문법 오류가 뜹니다SyntaxError: invalid syntax다른 언어를 쳐도 오류가 뜹니다지금 vscode에는 c언어 사용하려고 코드러너,c/c+,c/c+ 확장, codelldb과 Python, pylance, autopep8등이 깔려 있습니다 python은 홈브류로 설치한 상태입니다
-
미해결파이썬 텍스트 분석 입문 - 데이터 수집부터 분석까지
Konlpy 설치 오류
konlpy설치과정에서 오류가 발생했습니다.Conda 설치가 회사 네트워크 문제로 되지 않아 프롬프트로 파이썬을 설치했고 Python은 3.8.9버전입니다. (3.9와 최신버전인 3.11로 설치했었는데 에러가 해결되지 않아 3.8로 다운그레이드 했습니다.)Java는 19.0.2(64-bit)로 설치했고 JPype는 1.1.2-cp38-win_amd64로 설치했습니다.JAVA_HOME 환경변수 설정도 확인을 완료했는데 자바 패키지상의 오류가 나타나네요ㅜㅜ
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제풀이 & 해설
안녕하세요 강사님.다른분들과 같이 저도 실전문제풀이 & 해설 pdf받을 수 있을까 부탁드리려 글 남겼습니다.jsdae90@gmail.com 입니다. (_ _)
-
미해결홍정모의 따라하며 배우는 C언어
4:15에 나오는 float round-off문제에서 든 생각입니다
float a = 0.01f;변수 a를 이렇게 초기화 하면 실제 a에는0.01이 아니라 0.009999999776이 담깁니다.printf("%f", a);를 했을 때 0.010000이 나오는 이유가0.009999999776이 소수점 일곱번째자리에서 반올림 되어서 그렇게 출력되는게 맞는가요?
-
미해결스프링 핵심 원리 - 기본편
인테리 j에서도 오픈콜하이라키 기능이 있나요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]반복적으로 복습을 하고있는상황인데요 특정 메서드 호출하여 사용하는 클래스 위치 알아내는 방법이 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
Assertion에러가 납니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java.lang.AssertionError: Expecting actual:hello.core.member.MemoryMemberRepository@2796aeaeand:hello.core.member.MemoryMemberRepository@1fa1cab1to refer to the same object 도와주세요~~assertThat(orderService.getMemberRepository()).isSameAs(memberRepository);
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
GraphQL 목록 삭제가 실시간으로 반영되지 않아요
import { gql,useMutation,useQuery } from "@apollo/client" import styled from "@emotion/styled" const FETCH_PRODUCT = gql` query fetchBoards($page:Int){ fetchBoards(page:$page){ writer title contents number } } ` const FETCH_DELETE = gql` mutation deleteBoard($number:Int){ deleteBoard(number:$number){ message } } ` const Row = styled.div` display:flex; ` const Column = styled.div` width: 25%; ` export default function StaticRoutedPage(){ const{data}=useQuery(FETCH_PRODUCT, {variables:{ page:2 }}) const[deleteBoard]= useMutation(FETCH_DELETE) console.log(data?.fetchBoards) const onClickDelete= async (event)=>{ await deleteBoard({ variables:{ number: Number(event.target.id) }, refetchQueries:[{query: FETCH_PRODUCT}] }) } return ( <> {data?.fetchBoards?.map((el)=>( <Row> <Column><input type="checkbox"/></Column> <Column>{el.number}</Column> <Column>{el.title}</Column> <Column>{el.contents}</Column> <Column> <button id={el.number} onClick={onClickDelete}>삭제</button> </Column> </Row>))} </> ) }
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
로그인 섹션 이후 리뷰 및 완성코드
안녕하세요,중고마켓을 진행하게 되는 로그인 섹션부터는포트폴리오 리뷰가 진행되지 않는다고 하셨는데,완성코드도 제공이 되지 않는걸까요?제공이 되지 않는다면 모르는 부분에 대해선코드수정과 리뷰는 어떻게 알 수 있을까요??
-
미해결블렌더 파이썬 BPY 입문강의
youtebe에 있는 비디오와 여기 있는 비디오의 차이점이 있을까요?
유투브에 있는 강의 비디오와 여기 있는 강의 비디오의 차이점이 있나요?없다면 youtube에서 보는게 인터페이스가 더 편한듯 해서youtube에서 볼려고 합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
색상정보 입력 테스트 시 id 문제 문의 드립니다.
색상정보 DB에 넣기 과정 중InvalidDataException 에러가 발생합니다. 내용은 id 가 누락되었다고 하는데요 (아래 코드 블럭에 오류 추가했습니다)category_color.dart 에도 id 는 integer().autoIncrement()(); 로 해두었습니다.앱 삭제 후 다시 설치해도 동일하게 문제가 발생하는데... id 값을 강제로 입력을 해야할까요?입력을 해야한다면 어떤 식으로 입력을 하면 되는걸까요??[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: InvalidDataException: Sorry, CategoryColorsCompanion(id: Value.absent(), hexCode: Value(F44336)) cannot be used for that because: • id: This value was required, but isn't present #0 VerificationContext.throwIfInvalid (package:drift/src/runtime/data_verification.dart:74:5) #1 InsertStatement._validateIntegrity (package:drift/src/runtime/query_builder/statements/insert.dart:257:51) #2 InsertStatement.createContext (package:drift/src/runtime/query_builder/statements/insert.dart:125:5) #3 InsertStatement.insert (package:drift/src/runtime/query_builder/statements/insert.dart:70:17) #4 LocalDatabase.createCategoryColor (package:calendar_scheduler/database/drift_database.dart:36:28) #5 main (package:calendar_scheduler/main.dart:38:22) <asynchronous suspension>
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
persist 호출 이후 롤백 상황이 발생하는 경우?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서 멤버 객체를 persist를 이용해서 저장하는데 그 시점에 PK를 알 수 없으니 insert 구문이 실행되는 것까지는 이해가 되는데, 지금 트랜잭션이 진행중인데 모종의 이유로 인해서 커밋 전 예외가 발생한다면, 롤백이 이루어지면서 저장 작업을 무효화하고 ID도 회수하는 과정이 이루어지나요?
-
미해결스프링 핵심 원리 - 기본편
널 포인트 익셉션이 터지는 이유가 뭔가요 ?
강의 21분쯤에 스프링에서 돌리는게 아니라 순수하게 돌리기 때문에 널포인트 익셉션이 터진다고 말씀하시는데 스프링 컨테이너인 ApplicationContext.getBean()을 통해 인스턴스를 가져오는게 아니라 new OrderServiceImpl() 를 했기 때문에 @Autowired가 동작하지 않게 된 것 맞나요 ? 24분쯤 설명을 보시면 스프링 테스트코드를 이용할 수 있다고 하시면서 CoreApplicationTest를 보여주시는데 CoreApplicationTest 클래스를 제외한 test코드를 작성하는 클래스 에서는 스프링 컨테이너가 작동하지 않는 것인가요? 일반 메서드 주입이랑 생성자 주입이랑 차이점이 무엇인가요? 메서드명을 init으로 하느냐, 클래스 이름으로 하느냐의 차이인가요? 메서드 주입의 이점이 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:replace랑 layout:decorator 같이 사용 못하나요?
layout분리 작업중 th:replace랑 layout:decorator를 함께사용하니 stackoverflow 에러가 발생하네요. 원래 두개는 같이 사용하지 못하는건가요?페이지 소스코드layout이 될 소스코드
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
videoPlayer 공부 중입니다. aspectRatio 실행 시 동영상 위치가 가운데로 정렬되지 않고 상단에 배치가 됩니다.
아래와 같이 동영상 보고 따라 하였는데 원인이 무엇일까요?import 'dart:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:video_player/video_player.dart'; class CustomVideoPlayer extends StatefulWidget { final XFile video; const CustomVideoPlayer({required this.video, Key? key}) : super(key: key); @override State<CustomVideoPlayer> createState() => _CustomVideoPlayerState(); } class _CustomVideoPlayerState extends State<CustomVideoPlayer> { VideoPlayerController? videoPlayerController; @override void initState() { // TODO: implement initState super.initState(); initialController(); } initialController() async { videoPlayerController = VideoPlayerController.file(File(widget.video.path)); await videoPlayerController!.initialize(); setState(() {}); } @override Widget build(BuildContext context) { if (videoPlayerController == null) { return CircularProgressIndicator(); } return AspectRatio( aspectRatio: videoPlayerController!.value.aspectRatio, child: VideoPlayer(videoPlayerController!)); } }
-
해결됨홍정모의 따라하며 배우는 C언어
ptr1와 &ptr1의 차이점
안녕하세요~ 강의 1분40초 쯤에printf("%p %d %p\n", ptr1, *ptr1, &ptr1); 코드를 출력하면 값이002AFAEC 100 002AFAE0이렇게 나옵니다.ptr1이랑 &ptr1이랑 arr[0]의 주소를 출력하는 걸로 알고 있는데 다르게 나오는 걸로 보니 제가 잘못 알고 있는 거 같습니다ㅠ ptr1이랑 &ptr1을 출력하면 값이 다르게 나오는데 이 둘의 차이는 무엇일까요? 헷갈리네요아래에 코드도 첨부해 놓았습니다.int main() { int arr[5] = { 100, 200, 300, 400, 500 }; int* ptr1, * ptr2, * ptr3; ptr1 = arr; printf("%p %d %p\n", ptr1, *ptr1, &ptr1); // 002AFAEC 100 002AFAE0 }