묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
텍스트만 추출하기
드디어 막바지가 보이네요! 명강의 감사드립니다 ㅎㅎ 다른분들이 질문하신 것처럼, 크롤링했을 때 함께 추출되는 태그를 없애고 싶었습니다. '<b>갤럭시S21</b> 가격 19만원대 판매, S20 및 노트20 울트라 특가 프로모션' 원초적인 방법으로 해결하려고 우선 replace를 사용해서 해결은 했는데요, 만약 <b>태그 뿐만 아니라 더 복잡하게 많은 태그들이 있다면, 그걸 일일이 replace로 해결을 해야하나요? ㅠㅠ get_text()와 string이 안되는 원인을 찾다가, 이 메서드들은 BeautifulSoup의 메서드인 사실을 발견하고 import했지만, AttributeError: 'str' object has no attribute 'get_text' 이러한 에러가 여전히 발생했습니다. 새로운 기능이 추가되기 전까지 replace로 해결을 해야하는지 아니면 다른 방법이 있는지 궁금합니다 ! 구글링을 더이상 해봐도 진전이 없어서 질문드립니다 ㅠㅠ 아래는 제 코드입니다. import requests from bs4 import BeautifulSoup import openpyxl client_id = '비공개' clinent_secret = '비공개' start, num = 1, 0 excel_file = openpyxl.Workbook() excel_sheet = excel_file.active excel_sheet.column_dimensions['B'].width = 100 excel_sheet.column_dimensions['C'].width = 100 excel_sheet.append(['랭킹', '제목', '링크']) for index in range(10): start_number = start + (index * 100) naver_open_api = 'https://openapi.naver.com/v1/search/news.json?query=갤럭시 S21&display=100&start=' + str(start_number) header_params = {"X-Naver-Client-id": client_id, "X-Naver-Client-Secret": clinent_secret} res = requests.get(naver_open_api, headers=header_params) if res.status_code == 200: data = res.json() for item in data['items']: num += 1 title = item['title'].replace('<b>', '').replace('</b>', '') excel_sheet.append([num, title, item['link']]) else: print("Error Code", res.status_code) excel_file.save('Crawling.xlsx') excel_file.close() print('엑셀처리 완료')
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
gradle
최근 현업 추세가 gradle로 넘어간다고 글에서 봤었는데 gradle을 사용한 강의를 내 주실 생각 있으신가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
디버깅을 하지않고 시작하는 이유
코드를 작성하다 틀린 부분이 있으면 알기 위해 디버깅 하면서 시작해야할 것 같은데 디버깅을 하지 않고 시작하는 이유를 알 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
5:58 질문입니다
InputManager _input = new InputManager(); public static InputManager Input { get { return Instance._input; } } void Start() { Init(); } void Update() { _input.OnUpdate(); } 해당 코드의 업데이트 문에서 _input.OnUpdate(); 로 작성하셨는데 제 생각에는 Input.OnUpdate(); 로 해야될것 같아서 질문드립니다 두가지 모두 상관없이 사용하면 되는건가요?
-
미해결3dsmax 모델링 고수의 비밀! (Modeling Expert Technique)
챔퍼에 대해 문의드립니다
아래와 같은 형태의 모델링을 만들고 있습니다 챔퍼를 준 뒤 엣지를 다시 정리 해주고 터보스무스를 줬는데요 이렇게하면 원형이 매끈하지 않고 튀어나온 부분이 생깁니다 이걸 수정하는 방법은 챔퍼를 업데이트 하는 방법밖에 없나요? 없데이트 안하고 기존 챔퍼 모디파이를 쓰고 있습니다 크리즈셋을 적용해도 inset으로 만든 부분이 이상하게 됩니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Delegate가 헷갈려요
안녕하세요 3번째 파트, 유니티 듣다가 C# 문법들이 헷갈려서 유니티 파트 들으면서 C#도 복습중에 있습니다 그러다 Delegate를 다시 듣는데 좀 헷갈려서요 헷갈리는 이유는 아무래도 접한 순서 때문이거 같아요 저는 event를 먼저 배워버려서 이쪽이 가지는 인상이 너무 큰거 같아요 저에게 이벤트는 변수 선언할 때, Event 붙이고, 다른 클래스에서 해당 event에 접속한다음에 += 붙여서 필요한 함수(함수 A)를 구독시킨다ㅣ 여기서 추가로, Event를 통해서 함수A에가다가 추가 정보를 전달해주고 싶으면 EventArgs를 생성해서 넘겨준다 대신, 구독하는 함수A 또한 EventArgs의 형식을 인자로 가져야 한다인데요 (설명이 부정확한 점은 양해 부탁드립니다) 글을 쓰다보니까 이해를 하는 단계인거 같은데 느낌상, Delegate를 사용하면 2가지의 단계가 있는거 같아요예를 들자면 void OnButtonPressed(CalScore calScore) { calScore(); }// 버튼이 눌리면 호출 되는 함수 int _score = 0; delegate int CalScore(int score) CalScore calScore = new Calscore(AddScore(3)); calScore += RemoveScore(2); public int AddScore(int score) { _score += score; } public int RemoveScore(int score) { _score -= score; } static void Main(sting[] args) { OnButtonPressed(calScore) } 이 경우엔, delegate의 인스턴스인 calScore는 이 delegate 형식을 따르는 함수들의 연산 결과물을 담아두고 있는 바구니 같아요. (단계1) 그리고 이 친구를 인자로 받겠다고 한 OnButtonPressed()는 말 그대로 이 delegate 인스턴스를 받아서 이 녀석이 가지고 있는 연산 결과물을 꺼내주는거죠(단계2) 또 다시 글을 쓰다보니까 생각이 드는게 처음에 함수를 인자로 넘겨준다고 하셔서 저는 그 말대로 OnButtonPressed(AddScore(3))가 될 거라고 생각을 했습니다 그런데 곰곰히 생각을 해보니까 그게 아니라 delegate라는 녀석이 두 종류의 함수 사이에서 교두보 역할을 해주는거 같아요 글이 너무 두서가 없어서 죄송합니다 제가 똑바로 이해한게 맞나요?
-
자바 기본을 위한 강의 1부
기본 강의 인거 같은데 쓰레드 강의에 집중된 느낌이네요 ㅎ;
삭제된 글입니다
-
미해결빠르게 git - 핵심만 골라 배우는 Git/Github
folk 하는 이유는 무엇인가요?
organization/project를 fork하지 않고 organization/project를 clone 후 브랜치를 따서 해당 브랜치에서 작업 후 organization/project master 브랜치로 pull request를 보내는 것도 가능한가요? 왜 folk를 해야하는지에 대해서 질문드리겠습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문 있습니다.
localhost:8080/hello-mvc?name=spring! 실행할 때, 위 주소에서 뒷부분에 ?name=spring! 으로 변수 선언(?) 단어 설정(?) 해 주는 이유가 있나요? 코드를 작성할 때 아예 선언을 해주는 것과 주소창에서 바꿔주는 것과의 차이가 궁금합니다. 감사합니다!
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
should가 어떻게 저기 나올 수 있죠?
안녕하세요. 보통 다른 언어는 should 모듈을 가져왔다고 치면, should.be. ~~~ () 와 같이 should 가 맨 앞에 오지 않습니까? 그런데 도대체!! 어떻게 res.body.should ~~()와 같이 should가 중간에 존재할 수 있나요?? 설명해주시기엔 길 듯하여, 혼자 검색할만한 키워드라도 알려주시면 감사드리겠습니다!!!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
11:19부분에 질문이 있습니다.
11:19분 부터의 말씀이 이해가 되지 않습니다. 1. 다른 엔티티와 Child와 연관관계가 있으면 사용하면안된다. 2. Child에서 다른 부분으로 나가는 것은 상관이없는데, 3. 다른 애들이 Child를 아는 것은 상관이없는데 다른 애들이 Child를 알게 되면 운영에서 어렵다 =========================================== 1,3. 다른애들이 Child를 안다는 것은 Member가 연관관계의 주인인 상태라는 말씀이신건가요 ?! 2. Child에서 다른 부분으로 나간다는라는 의미가 이해되지않습니다. Parent와 Child를 볼 때 Child의 소유자는 parent 하나이지만 Child에 아래와같이 연관관계매핑이 필요한경우 사용하지 말라는 의미로받아 드리면 될까요 ?! @ManyToOne@JoinColumn(name = "member_id")private Member member;
-
미해결홍정모의 따라하며 배우는 C++
explicit instantiation 을 하게되면 메모리적으로 어떻게 되나요?
explicit instantiation 을 하게되면 단순하게 컴파일러에게 어떤 타입을 사용할지만 알리는 역할을 하게되나요? 따로 메모리가 생성된다던지 그런일이 발생하는지 궁금해요
-
미해결[인공지능 컴퓨터비전] 20장의 사진으로 딥러닝 모델 만들기
numpy, cv2 아나콘다 상에서 설치 문제
(사진)
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
JpaMain 실행 시 마지막에 exit code 1과 함께 이 메시지들이 계속해서 출력되서 도움 요청드립니다. 오류 메시지가 너무 많이 떠서 어떤 것이 문제인지 잘 모르겠네요..
-
미해결Node.Js 활용하기
cart목록 delete하는 부분의 부탁드립니다.
안녕하세요. delete기능이 잘 안되서, cart목록 delete하는 소스를 부탁드려도 되는지요?
-
해결됨실전! Querydsl
Querydsl 적용시 service와 seeviceImpl
안녕하세요 mybatis환경에서 변경해보고자 배우고 있는 중입니다. 다름이 아니라 예시에서 보여주신 소스를 보면 service나 serviceimpl없이 바로 controller에서 repo를 호출하는 형식으로 되어있는데, 실무에서도 이와 같이 사용하는지 아니면 controller service serviceimpl repo repoimpl 형식으로 쓰는지 궁금합니다. 이른 시간에 질문 올려 죄송합니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
heroku 배포하면 사진이 사라지는 이유 알아냈습니다!
https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted 이 사유인 것 같은데 잠자기 모드에 들어가면서 올린 파일들을 모두 삭제하는 것 같습니다. heroku에서 배포하면 제가 올린 업로드 파일들을 다른 방법으로 저장하는 방식은 없는건가요? ㅠㅠ 배포하는 영상이 https://www.youtube.com/watch?v=qdoiwouykAg&list=LLpCpoDhCPBAC76g4OYEiVzw 이 영상에 있는 heroku 말고는 없으시죠? ㅠㅠ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
필터박스 만든후
체크박스나 라디오 박스 클릭을 할때 상품이 가져오는 기능들은 다 잘됩니다 그런데 체크박스나 라디오박스 클릭시 더보기를 누르지 않았는데도 그 상품들이 나오는데 이건 몽고DB에서 데이터를 기반으로 조건에 맞기만 하면 다 찾아와서 그런걸까요??
-
따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기
"npm install" 에러 도와주세요!
삭제된 글입니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
reduxSaga로는 되는데 SWR로 바꾸면 에러가 나요
profil.js import React,{useEffect} from 'react'; import AppLayout from "../components/AppLayout" import NicknameEditForm from "../components/NicknameEditForm" import FollowList from "../components/FollowList" import {useSelector,useDispatch} from "react-redux" import {LOAD_FOLLOWERS_REQUEST,LOAD_FOLLOWINGS_REQUEST} from "../reducers/userReducer" import Head from "next/head" import {useRouter} from "next/router" import {END} from "redux-saga" import axios from "axios"; import wrapper from "../store/configureStore" import {LOAD_MY_INFO_REQUEST} from "../reducers/userReducer" import useSWR from "swr"; import {backAddress} from "../back" const fetcher = (url)=>axios.get(url,{withCredentials:true}).then(result=>result.data); function Profile(){ const dispatch = useDispatch(); const router = useRouter(); const {me} = useSelector(state=>state.userReducer); const {data:followersData,error:followerError} = useSWR(`${backAddress}/user/followers`,fetcher); const {data:followingsData,error:followingError} = useSWR(`${backAddress}/user/followings`,fetcher); useEffect(()=>{ if(!me) { router.push('/'); } },[me]) // useEffect(()=>{ // dispatch({ // type:LOAD_FOLLOWERS_REQUEST // }) // dispatch({ // type:LOAD_FOLLOWINGS_REQUEST // }) // },[]) // return 이 hooks(use...())보다 위에 있을수 없음 if(!me) return null; if(followerError || followingError){ console.error(followerError || followingError); return <div>팔로잉/팔로워 로딩 중 에러가 발생함</div>; } return ( <> <Head> <title>profile</title> </Head> <AppLayout> <NicknameEditForm /> <FollowList header="팔로잉 목록" data={followingsData} /> <FollowList header="팔로워 목록" data={followersData} /> </AppLayout> </> ) } export const getServerSideProps = wrapper.getServerSideProps(async (context)=>{ const cookie = context.req ? context.req.headers.cookie : ""; axios.defaults.headers.Cookie = ""; if(context.req && cookie){ axios.defaults.headers.Cookie = cookie; // 쿠키 넣기 } context.store.dispatch({ type:LOAD_MY_INFO_REQUEST, }) context.store.dispatch(END); // 사용법 request success 기다리기 await context.store.sagaTask.toPromise(); // 사용법 configureStore.js 에서 등록한 sgagTask 를 사용 }); export default Profile; routes/user.js router.get("/followers",isLoggedIn,async (req,res,next)=>{ try{ const me = await User.findOne({where:{id:req.user.id}}); if(!me){ res.status(403).send("me 없음") } const followers = await me.getFollowers( { limit:2, } ); res.status(200).json(followers) } catch(error){ console.error(error); next(error); } }) router.get("/followings",isLoggedIn,async (req,res,next)=>{ try{ const me = await User.findOne({where:{id:15||req.user.id}}) if(!me){ res.status(403).send("me 없음") } const getFollowings = await me.getFollowings( { limit:2, } ); res.status(200).json(getFollowings) } catch(error){ console.error(error); next(error); } }) Error sql: 'SELECT `User`.`id`, `User`.`email`, `User`.`nickname`, `User`.`createdAt`, `User`.`updatedAt`, `Posts`.`id` AS `Posts.id`, `Followings`.`id` AS `Followings.id`, `Followings->Follow`.`createdAt` AS `Followings.Follow.createdAt`, `Followings->Follow`.`updatedAt` AS `Followings.Follow.updatedAt`, `Followings->Follow`.`FollowingId` AS `Followings.Follow.FollowingId`, `Followings->Follow`.`FollowerId` AS `Followings.Follow.FollowerId`, `Followers`.`id` AS `Followers.id`, `Followers->Follow`.`createdAt` AS `Followers.Follow.createdAt`, `Followers->Follow`.`updatedAt` AS `Followers.Follow.updatedAt`, `Followers->Follow`.`FollowingId` AS `Followers.Follow.FollowingId`, `Followers->Follow`.`FollowerId` AS `Followers.Follow.FollowerId` FROM `Users` AS `User` LEFT OUTER JOIN `Posts` AS `Posts` ON `User`.`id` = `Posts`.`UserId` LEFT OUTER JOIN ( `Follow` AS `Followings->Follow` INNER JOIN `Users` AS `Followings` ON `Followings`.`id` = `Followings->Follow`.`FollowingId`) ON `User`.`id` = `Followings->Follow`.`FollowerId` LEFT OUTER JOIN ( `Follow` AS `Followers->Follow` INNER JOIN `Users` AS `Followers` ON `Followers`.`id` = `Followers->Follow`.`FollowerId`) ON `User`.`id` = `Followers->Follow`.`FollowingId` WHERE `User`.`id` = NaN;', parameters: undefined } SequelizeDatabaseError: Unknown column 'NaN' in 'where clause' at Query.formatError (C:\WEB\full\back\node_modules\sequelize\lib\dialects\mysql\query.js:239:16) at Query.run (C:\WEB\full\back\node_modules\sequelize\lib\dialects\mysql\query.js:54:18) at processTicksAndRejections (internal/process/task_queues.js:97:5) GET /user/followers 500 27.011 ms - 511 리덕스사가로 바꿔서 실행하면 잘 작동하는데 swr로 바꾸면 sql문에 nan값이 들어갑니다. 제가 잘못한 부분이 어디인가요?