172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
한 입 크기로 잘라먹는 Next.js
안녕하세요. 좋은 강의 잘 수강하고 있습니다! 강의를 듣던 중 궁금한게 있어 질문드립니다. 정적 사이트 생성 (SSG)는 빌드 타임에 데이터를 서버로 요청하고 받아온 후 렌더링을 미리 해둔다고 이해했는데, 이렇게 되면 사용자가 페이지를 요청한 시점에는 서버의 데이터가 달라졌을 수 있는게 아닌가 하는 의문이 남습니다. 또한 이렇게 된다면 서버의 데이터가 변경될 때마다 매 번 프로젝트를 새로 빌드해야하는 것일까요? 제가 잘못 이해한 부분이 있는지 궁금합니다.
김동민
2024-08-30T20:55:14.530Z
댓글 1
좋아요 0
조회수 269
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
서버가 거부가 되어서 헤더추가까지 했는데도... 여전히 서버 거부인 듯하네요.. 강사님 그대로 따라 했는데.. 왜 이렇죠.ㅠㅠ import requests from bs4 import BeautifulSoup import pandas as pd # 파라미터 종류가 많은 경우 꿀팁 param = { 'isDetailSearch': 'N', 'searchGubun': 'true', 'viewYn': 'OP', 'strQuery': '패션 인공지능', 'order': '/DESC', 'onHanja': 'false', 'strSort': 'RANK', 'iStartCount': 0, 'fsearchMethod': 'search', 'sflag': 1, 'isFDetailSearch': 'N', 'pageNumber': 1, 'icate': 're_a_kor', 'colName': 're_a_kor', 'pageScale': 100, 'isTab': 'Y', 'query': '패션 인공지능', } reponse = requests.get('https://www.riss.kr/search/Search.do',params=param) html = reponse.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select('.srchResultListW > ul > li') # 헤더가 필요한 경우(서버가 막힌 경우) header = { 'User-Agent' : 'Mozilla/5.0', 'Referer' : 'https://www.riss.kr/search/Search.do?isDetailSearch=N&searchGubun=true&viewYn=OP&queryText=&strQuery=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&exQuery=&exQueryText=&order=%2FDESC&onHanja=false&strSort=RANK&p_year1=&p_year2=&iStartCount=0&orderBy=&mat_type=&mat_subtype=&fulltext_kind=&t_gubun=&learning_type=&ccl_code=&inside_outside=&fric_yn=&db_type=&image_yn=&gubun=&kdc=&ttsUseYn=&l_sub_code=&fsearchMethod=search&sflag=1&isFDetailSearch=N&pageNumber=1&resultKeyword=&fsearchSort=&fsearchOrder=&limiterList=&limiterListText=&facetList=&facetListText=&fsearchDB=&icate=re_a_kor&colName=re_a_kor&pageScale=100&isTab=Y®nm=&dorg_storage=&language=&language_code=&clickKeyword=&relationKeyword=&query=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5', } for article in articles[:1]: title = article.select_one('.title > a').text link = 'https://www.riss.kr' + article.select_one('.title > a').attrs['href'] # 상세 페이지로 요청(페이지 안에 들어가야 내용이 있는 경우) response = requests.get(link, headers=header)# 여기서 헤더 추가 html = reponse.text soup = BeautifulSoup(html, 'html.parser') print(soup) press = soup.select_one('.infoDetailL > ul > li:nth-of-type(2) > div').text #print(title,link,press)
루키22
2024-08-30T16:45:05.189Z
댓글 2
좋아요 0
조회수 193
해결됨
한 입 크기로 잘라먹는 Next.js
Next.js는 오직 초기 접속시에만 html 파일을 불러와 Hydration 하고 그 이후의 페이지 이동은 리액트의 CSR 방식으로 처리된다고 알고 있습니다. 그런데 Page Router 에서 getServerSideProps 를 사용할 때 매 요청마다 사전 렌더링을 통해 html을 생성하는 것으로 알고 있습니다. 그러면 초기 접속이 아니더라도, getServerSideProps 를 사용한 페이지로 이동하면 Next 서버에서 클라이언트에게 html을 응답해주는 건가요? 서버로부터 html을 응답받는 것이 맞다면 어떻게 깜빡임 없이 화면 전환이 자연스럽게 되는지, 그리고 이렇게 되면 페이지 이동이 리액트의 CSR 방식으로 처리된다고 말할 수 없는건지 궁금합니다 😭 서버로부터 html을 응답받는 것이 아니라면, 클라이언트에서 어떤 값을 서버로부터 받아 렌더링을 하는건지 궁금합니다. getStaticProps 를 사용할 때와 유사하게 json 파일이 생성되어서 이 json 파일을 클라이언트에게 응답해주는 건가요?
강혁준
2024-08-30T15:40:25.063Z
댓글 2
좋아요 1
조회수 310
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
안녕하세요 강사님! 강의 너무 잘 만들어주셔서 감사합니다. 강사님과 같은 코드를 사용하여 iframe을 전환했는데 저는 자꾸 NoSuchElementException 오류가 뜨네요 위 부분 코드도 그대로 따라했는데 같이 올려봅니다! #셀레니움 기본 템플릿 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pyperclip user_id = "제 아이디" user_pw = "제 비밀번호" #크롬드라이버 생성 driver = webdriver.Chrome() #페이지 이동 driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/") # time.sleep(1) #아이디 입력 id = driver.find_element(By.CSS_SELECTOR, '#id') pyperclip.copy(user_id) id.send_keys(Keys.CONTROL,'v') # time.sleep(1) #패스워드 입력 pw = driver.find_element(By.CSS_SELECTOR, '#pw') pyperclip.copy(user_pw) pw.send_keys(Keys.CONTROL,'v') # time.sleep(1) #로그인버튼 클릭 driver.find_element(By.CSS_SELECTOR,'#log\\.login').click() #드롭다운 메뉴 클릭 driver.find_element(By.CSS_SELECTOR,'#account > div.MyView-module__my_menu___eF24q > div > div > ul > li:nth-child(1) > a > span.MyView-module__item_text___VTQQM').click() #메일함버튼 클릭 driver.find_element(By.CSS_SELECTOR,'#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() #현재 열려있는 창 driver.window_handles #새창으로 전환 driver.switch_to.window(driver.window_handles[1]) #메일쓰기버튼 클릭 driver.find_element(By.CSS_SELECTOR,'#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write').click() #받는사람 recieve = driver.find_element(By.CSS_SELECTOR, '#recipient_input_element') recieve.send_keys('kiyoung3159@naver.com') title = driver.find_element(By.CSS_SELECTOR,'#subject_title') title.send_keys('음하하 아주 잘했어') #프레임전환 iframe = driver.find_element(By.CSS_SELECTOR,"#content > div.contents_area > div > div.editor_area > div > div.editor_body > iframe") driver.switch_to.frame(iframe) 에러 코드는 아래와 같이 뜨네요! NoSuchElementException Traceback (most recent call last) Cell In[61], line 2 1 #프레임전환 ----> 2 iframe = driver.find_element(By.CSS_SELECTOR,"#content > div.contents_area > div > div.editor_area > div > div.editor_body > iframe") 3 driver.switch_to.frame(iframe) File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\selenium\webdriver\remote\webdriver.py:741, in WebDriver.find_element(self, by, value) 738 by = By.CSS_SELECTOR 739 value = f'[name="{value}"]' --> 741 return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"] File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\selenium\webdriver\remote\webdriver.py:347, in WebDriver.execute(self, driver_command, params) 345 response = self.command_executor.execute(driver_command, params) 346 if response: --> 347 self.error_handler.check_response(response) 348 response["value"] = self._unwrap_value(response.get("value", None)) 349 return response File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\selenium\webdriver\remote\errorhandler.py:229, in ErrorHandler.check_response(self, response) 227 alert_text = value["alert"].get("text") 228 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here --> 229 raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#content > div.contents_area > div > div.editor_area > div > div.editor_body > iframe"} ... (No symbol) [0x00007FF7544255E0] (No symbol) [0x00007FF754414A7F] BaseThreadInitThunk [0x00007FFF14F8257D+29] RtlUserThreadStart [0x00007FFF16E4AF28+40] 무엇이 잘못되었는지 1시간 고민하다가 질문 올려봅니다!!
정기영
2024-08-30T15:14:54.072Z
댓글 1
좋아요 0
조회수 115
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
이전 c나 java의 경우엔 \n ln등 표기 되는 문구가 있었습니다. 파이썬의 경우엔 print가 끝나면 자동으로 계행이 되는건지, 아니면 다른 조건이 있는건지 알고싶습니다.
주서
2024-08-30T12:08:16.876Z
댓글 1
좋아요 0
조회수 197
미해결
[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
서버 거부가 되어서 헤더추가까지 했는데도... 여전히 서버 거부인 듯하네요.. 강사님 그대로 따라 했는데.. 왜 이렇죠.ㅠㅠ import requests from bs4 import BeautifulSoup import pandas as pd # 파라미터 종류가 많은 경우 꿀팁 param = { 'isDetailSearch': 'N', 'searchGubun': 'true', 'viewYn': 'OP', 'strQuery': '패션 인공지능', 'order': '/DESC', 'onHanja': 'false', 'strSort': 'RANK', 'iStartCount': 0, 'fsearchMethod': 'search', 'sflag': 1, 'isFDetailSearch': 'N', 'pageNumber': 1, 'icate': 're_a_kor', 'colName': 're_a_kor', 'pageScale': 100, 'isTab': 'Y', 'query': '패션 인공지능', } reponse = requests.get('https://www.riss.kr/search/Search.do',params=param) html = reponse.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select('.srchResultListW > ul > li') # 헤더가 필요한 경우(서버가 막힌 경우) header = { 'User-Agent' : 'Mozilla/5.0', 'Referer' : 'https://www.riss.kr/search/Search.do?isDetailSearch=N&searchGubun=true&viewYn=OP&queryText=&strQuery=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&exQuery=&exQueryText=&order=%2FDESC&onHanja=false&strSort=RANK&p_year1=&p_year2=&iStartCount=0&orderBy=&mat_type=&mat_subtype=&fulltext_kind=&t_gubun=&learning_type=&ccl_code=&inside_outside=&fric_yn=&db_type=&image_yn=&gubun=&kdc=&ttsUseYn=&l_sub_code=&fsearchMethod=search&sflag=1&isFDetailSearch=N&pageNumber=1&resultKeyword=&fsearchSort=&fsearchOrder=&limiterList=&limiterListText=&facetList=&facetListText=&fsearchDB=&icate=re_a_kor&colName=re_a_kor&pageScale=100&isTab=Y®nm=&dorg_storage=&language=&language_code=&clickKeyword=&relationKeyword=&query=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5', } for article in articles[:1]: title = article.select_one('.title > a').text link = 'https://www.riss.kr' + article.select_one('.title > a').attrs['href'] # 상세 페이지로 요청(페이지 안에 들어가야 내용이 있는 경우) response = requests.get(link, headers=header)# 여기서 헤더 추가 html = reponse.text soup = BeautifulSoup(html, 'html.parser') print(soup) press = soup.select_one('.infoDetailL > ul > li:nth-of-type(2) > div').text #print(title,link,press)
루키22
2024-08-30T09:50:19.720Z
댓글 2
좋아요 0
조회수 227
미해결
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
연습문제 2번에서 아래 코드로 했을 때 안되는데 이유가 뭔지 모르겠습니다! 어차피 1개라서 반복문을 쓰지 않아도 될까 했는데 안되네요.. import requests from bs4 import BeautifulSoup url = 'https://davelee-fun.github.io/' res = requests.get(url) soup = BeautifulSoup(res.content, 'html.parser') items=soup.select('.sitetitle') print(items.get_text()) (+) print(item.get_text()) 했을때는 잘 추출되는데 item은 선언한적이 없는데 왜 되는걸까요~?
해리문
2024-08-30T07:41:42.153Z
댓글 1
좋아요 0
조회수 100
해결됨
한 입 크기로 잘라먹는 Next.js
서버 컴포넌트에서 클라이언트 컴포넌트에 직렬화 되지 않는 props는 전달 할 수 없다 RSC payload: RSC 렌더링 결과 + 연결된 클라이언트 컴포넌트 위치 + 서버 -> 클라이언트 컴포넌트에 전달하는 props 값 q1. 사전 렌더링 과정에서 서버 컴포넌트를 직렬화 할 때, 여기에 서버 -> 클라이언트 컴포넌트로 전달하는 props 값이 포함되는데 이 값이 함수이면 직렬화 할 수 없기 때문에 props에 함수를 사용할 수 없는 건가요?? q2. 서버->서버, 클라이언트->클라이언트 props는 RSC payload와(직렬화) 관계 없기 때문에 props에 함수 사용이 가능한 건가요??
react typescript next.js rsc
allmy
2024-08-30T06:45:55.827Z
댓글 1
좋아요 1
조회수 304
해결됨
한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
다음처럼 설정이나 이런 곳에는 한글 적용이 잘 되는데 Error lens 플러그인 설치 후 에러 알려주는 부분에서는 영어로만 됩니다.!
DH K
2024-08-30T06:09:10.095Z
댓글 1
좋아요 0
조회수 428
미해결
따라하며 배우는 리액트 네이티브 기초
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import React from 'react'; import Home from './src/screens/Home'; import Profile from './src/screens/Profile'; import FriendProfile from './src/screens/FriendProfile'; import EditProfile from './src/screens/EditProfile'; import Search from './src/screens/Search'; import Activity from './src/screens/Activity'; import { NavigationContainer } from '@react-navigation/native'; import Status from './src/screens/Status'; import Ionic from 'react-native-vector-icons/Ionicons'; const Stack = createNativeStackNavigator(); const Tab = createBottomTabNavigator(); const getTabBarIcon = (route, focused, size, color) => { let iconName; color = 'black'; if (route.name === 'Home') { iconName = focused ? 'home-sharp' : 'home-outline'; size = focused ? size + 8 : size + 2; } else if (route.name === 'Search') { iconName = focused ? 'search' : 'search-outline'; } else if (route.name === 'Activity') { iconName = focused ? 'heart' : 'heart-outline'; } else if (route.name === 'Profile') { iconName = focused ? 'person' : 'person-outline'; } return <Ionic name={iconName} size={size} color={color} />; }; const BottomTabScreen = () => { return ( <Tab.Navigator screenOptions={({ route }) => ({ tabBarHideOnKeyboard: true, tabBarShowLabel: false, headerShown: false, tabBarStyle: { height: 70, }, tabBarIcon: ({ focused, size, color }) => getTabBarIcon(route, focused, size, color), })} > <Tab.Screen name="Home" component={Home} /> <Tab.Screen name="Search" component={Search} /> <Tab.Screen name="Activity" component={Activity} /> <Tab.Screen name="Profile" component={Profile} /> </Tab.Navigator> ); }; const App = () => { return ( <NavigationContainer> <Stack.Navigator screenOptions={{ headerShown: false }}> <Stack.Screen name="Bottom" component={BottomTabScreen} /> <Stack.Screen name="Status" component={Status} /> <Stack.Screen name="FriendProfile" component={FriendProfile} /> <Stack.Screen name="EditProfile" component={EditProfile} /> </Stack.Navigator> </NavigationContainer> ); }; export default App; { "name": "ReactNativeInsta", "version": "0.0.1", "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", "lint": "eslint .", "start": "react-native start", "test": "jest" }, "dependencies": { "@react-navigation/bottom-tabs": "^6.6.1", "@react-navigation/material-top-tabs": "^6.6.14", "@react-navigation/native": "^6.1.18", "@react-navigation/native-stack": "^6.11.0", "react": "18.3.1", "react-native": "0.75.2", "react-native-safe-area-context": "^4.10.9", "react-native-screens": "^3.34.0", "react-native-vector-icons": "^10.1.0" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native/babel-preset": "0.75.2", "@react-native/eslint-config": "0.75.2", "@react-native/metro-config": "0.75.2", "@react-native/typescript-config": "0.75.2", "@types/react": "^18.2.6", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.6.3", "eslint": "^8.19.0", "jest": "^29.6.3", "prettier": "2.8.8", "react-test-renderer": "18.3.1", "typescript": "5.0.4" }, "engines": { "node": ">=18" } }
ehdns1133
2024-08-30T05:25:26.972Z
댓글 1
좋아요 0
조회수 184
해결됨
코딩테스트 [ ALL IN ONE ]
강의가 검정화면으로만 나오고 소리만 나옵니다
양지원
2024-08-30T02:34:21.650Z
댓글 1
좋아요 0
조회수 176
미해결
따라하며 배우는 노드, 리액트 시리즈 - 챗봇 사이트 만들기
포스트맨에서는 이벤트 쿼리가 답이 옵니다. http://localhost:3000/api/dialogflow/eventQuery http://localhost:5000/api/dialogflow/eventQuery 둘다 답이 옵니다. 다만 터미널과 아래 처럼 브라우저에서 인사말이 오지 않습니다. 시작하면 처음에 이벤트쿼리문이 오게 하려면 어떻게 해야하나요? 메번 감사합니다
코딩의외로
2024-08-30T02:30:59.496Z
댓글 1
좋아요 0
조회수 155
해결됨
한 입 크기로 잘라먹는 Next.js
MetaData 라는 컴포넌트를 만들어서 Head태그를 공통화 시켜서 props로 title과 description, 그리고 image는 옵셔널로 받으려고 하는데 각 페이지들의 렌더링 방식에 영향을 미치는지 궁금합니다!
김지후
2024-08-29T23:09:40.693Z
댓글 1
좋아요 0
조회수 244
미해결
Airflow 마스터 클래스
json으로 데이터로 잘불러왓고 dag도 성공적으로 마쳤다고 했는데 정작 files 폴더에는 저장이 안되어 있습니다. 그래서 docker inspect로 mount 속성을 보니 { "Type": "bind", "Source": "/home/jspark9703/airflow/files", "Destination": "/opt/airflow/files", "Mode": "rw", "RW": true, "Propagation": "rprivate" } propagation이 rprivate으로 되있더군요 아마 이 속성때문에 그런거같은데... volumes 속성을 바꾸는 방법은 없을까요? 아님 다른 문제가 있는 것일까요?
python 데이터-엔지니어링 airflow volumes
박준수
2024-08-29T12:35:15.438Z
댓글 1
좋아요 0
조회수 132
해결됨
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
안녕하세요? 조금씩 천천히 강의를 따라가고 있습니다 ^^ 글자속성 변경하기 챕터에서 특정 범위의 서체 변경하기를 따라 해 보고 있는데요. 빈문서를 만들고, 텍스트를 입력한 다음, 블럭을 설정하고, charshape = True를 입력하고, 실행시키면 화면에 나오는 것처럼 글자 속성이 변하지 않네요. 참고로 저는 Visual Studio Code로 작업을 하고 있습니다. 추측으로는, 열어 놓은 한글 파일에 접근할 수 있어야 하고 블럭설정한 부분을 읽어야 하는 것 같은데, 이 코드는 빠져 있는 건가요? 멋진 강의 감사합니다! ^^
이상하
2024-08-29T11:26:29.570Z
댓글 2
좋아요 1
조회수 179
미해결
[2025] 비전공자도 가능한 React Native 앱 개발 마스터클래스
npx create-react-native-app@latest 요거 터미널에 입력하니까, ⚠ This tool does not initialize new React Native projects. 뜨는데, 어떻게 해결하면 좋을까요?
javascript react node.js react-native typescript
junokks
2024-08-29T07:10:52.266Z
댓글 1
좋아요 0
조회수 240
해결됨
기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
The authenticity of host ' github.com (20.200.245.247)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV 위와같은 문구가 뜨고 안되네요. ㅠㅠ
react 인터랙티브-웹 클론코딩 next.js tailwind-css zustand
foxball
2024-08-29T05:34:23.301Z
댓글 1
좋아요 1
조회수 178
미해결
실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
이렇게 뜨는데 어떤 익스텐션 설치해야될까요?
javascript react 소프트웨어-테스트 vitest
거누
2024-08-29T04:45:05.696Z
댓글 1
좋아요 0
조회수 280
미해결
Next + React Query로 SNS 서비스 만들기
안녕하세요. useQuery로 가져온 data가 console로 찍어보면 두번찍히는데 왜 렌더링이 두번도는지 알 수 있을까요?
react next.js react-query next-auth msw
inflearn3
2024-08-29T04:31:02.901Z
댓글 1
좋아요 0
조회수 105
해결됨
[개정판] 파이썬 머신러닝 완벽 가이드
안녕하세요 선생님 다름이 아니라, 머신러닝 수강중 궁금한게 있어 질문드립니다 X1, X2 ,X3 ,X4 ~... Y가 있을 때 회귀예측을 진행한다고 하면 만약 타겟 Y값 목표가 100이라고 가정 했을 때 X1,X2,X3,X4들이 어느정도 값에 있는걸 추천한다 ? , 권장한다 ? 라는 분석기법도 있을까요 ? Q1) Y가 목표값이 있을 때, 각 X1~X4 범위 , 그에 따른 Y값의 신뢰구간 ㅠ 그냥 이 질문은 ML이 아니고 회귀분석 일까요 ??
kyb1053
2024-08-29T04:20:29.809Z
댓글 1
좋아요 0
조회수 95