수업을 듣고 다른 사이트로 실습을 해보려고 하는데, jsp로 만들어진 공공기관 사이트는 뭔가 잘 안먹히는 모습니다. 아래 사이트의 테이블 정보를 가져오고 싶은데, 얘네들은 클릭해도 주소가 변경되는것도 없고 아래와 같이 table이 들어있는 상위 class 태그를 찾아서 정의하고, 거기에서 table의 class명을 넣고 tbody, tr까지 찾아들어가도록 코딩을 했는데 table의 class명이 없다고 에러가 뜹니다. 이런 사이트의 table내 정보는 어떻게 가져올 수 있고, 테이블에 있는 원자재를 클릭해서 넘어가는 페이지는 어떻게 찾아갈 수 있나요?(XPATH, LINK_TEXT해도 먹히지 않아요..) https://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp url = "http://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp" driver.get(url) time.sleep(2) # driver.find_element(By.LINK_TEXT,"통계정보").click() # time.sleep(2) # driver.find_element(By.LINK_TEXT,"원자재가격정보") # time.sleep(2) class1 = driver.find_element(By.CLASS_NAME,"iframeLayout01") #테이블은 위와 같이 <table>안에 <tbody>, <tbdoy>안에 <tr>, <tr>안에 <td> 순으로 포함되어 있다. table_content = class1.find_element(By.CLASS_NAME,"data_print") tbody = table_content.find_element(By.TAG_NAME,"tbody") rows = tbody.find_elements(By.TAG_NAME,"tr") for index, value in enumerate(rows): body=value.find_elements(By.TAG_NAME,"td")[0] print(body.text)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 노드를 구현할때, 함수의 변수안에 self가 있는데 이게 어떤 역할을 하는지 궁금합니다.
안녕하세요! 수업 잘 듣고 있습니다. 제가 지금 질문이 생긴 범위는 xgboost나 lightgbm들 하이퍼 파라미터 튜닝시 max_depth나 min_child_weigh등 각각의 범위를 지정해주는데 (ex) 학습률이나, hp.quniform('max_depth',5,20,1) 이런 범위들은 문제마다 다르게 설정해주어야 하는건 알겠는데 제가 나중에 새로운 문제를 혼자 풀 때 어떤수치를 보고 파라미터 범위들을 설정해주어야하는 걸까요??
flyctl deploy가 진행이 안돼서 제 컴퓨터에 있는 도커를 삭제하고 다시 실행했더니 아래와 같은 상태에서 멈췄습니다. 구글링 해봐도 잘 모르겠어요 ㅠㅠ 어떻게 해결하면 될까요? C:\Users\dahye\Documents\react-project\d-market-server>flyctl deploy ==> Verifying app config --> Verified app config ==> Building image Remote builder fly-builder-quiet-sunset-984 ready ==> Building image with Buildpacks --> docker host: 20.10.12 linux x86_64 20: Pulling from heroku/buildpacks Digest: sha256:1dd1a9c5f291b47fed1aed3f4c348fdc878380319c15f0e09753a5898482554e Status: Image is up to date for heroku/buildpacks:20 20-cnb: Pulling from heroku/heroku Digest: sha256:c9d053a463c7cd81672a3b0d5d5e26bdcbdffe2782565ccbedc15867b8cddfb9 Status: Image is up to date for heroku/heroku:20-cnb Warning: Platform requested deprecated API '0.6' ===> DETECTING Warning: Buildpack 'heroku/ruby@0.0.0' requests deprecated API '0.4' Warning: Buildpack 'heroku/python@0.0.0' requests deprecated API '0.4' Warning: Buildpack 'heroku/scala@0.0.0' requests deprecated API '0.4' Warning: Buildpack 'heroku/php@0.0.0' requests deprecated API '0.4' Warning: Buildpack 'heroku/go@0.0.0' requests deprecated API '0.4' Warning: Buildpack 'heroku/gradle@0.0.0' requests deprecated API '0.4' 2 of 3 buildpacks participating heroku/nodejs-engine 0.8.16 heroku/nodejs-npm 0.5.2 ===> ANALYZING Previous image with name " registry.fly.io/d-market-server:cache " not found ===> RESTORING ===> BUILDING [Heroku Node.js Engine Buildpack] [Checking Node.js version] Detected Node.js version range: * Resolved Node.js version: 19.7.0 [Installing Node.js distribution] Downloading Node.js 19.7.0 Extracting Node.js 19.7.0 Installing Node.js 19.7.0 [INFO] Installing toolbox [INFO] - yj [INFO] Using npm v9.5.0 from Node [INFO] Installing node modules from ./package-lock.json npm WARN config production Use --omit=dev instead. WARN failed to finish build in graphql: Post " https://api.fly.io/graphql ": context canceled Oops, something went wrong! Could you try that again?
안녕하세요. 이것이 진짜 크롤링이다 기본편을 막 완강했고, 실전편을 수강하기에 앞서 질문이 있어 글을 남깁니다. 네이버 쇼핑 페이지에서 크롤링을 할때, 제품 페이지 안에 들어가면, 여러 옵션을 선택할 수 있는 창이 있는데, 이 옵션들을 선택한 가격도 크롤링으로 가져올 수 있나요? 예를 들어, 아래의 제품 페이지에 접속한 후, '선택'에 따라 가격이 달라지게 설정되어 있는 경우가 많은데, 해당 선택에 따른 가격을 크롤링할 수 있나요? 만약 가능하다면, 해당 내용을 실전편 강의 내용에서 다루는지 궁금합니다.
현재 코드는 아래와 같습니다. 자꾸 에러뜨는게 있어서 구글링하면서 2줄이 추가되었네요. options = Options() ## ERROR:device_event_log_impl.cc(218) 방지코드 options.add_argument('--no-sandbox') options.add_experimental_option("excludeSwitches", ["enable-logging"]) ## 화면 창 유지해주는 코드 options.add_experimental_option("detach", True) 그런데, 네이버 창이 떠서 잠시 머물다가 창이 꺼지진 않고 이렇게 바뀝니다. 주소가 data; 내용은없음.. 무엇이 문제일까요. 구글링해도 잘 못찾겠네요.
연습삼아 나라장터의 상단 부분에 셀레니움을 통해 특정 검색어를 입력 후 검색을 실행 하려합니다 관련하여, 해당페이지 접속 후 단순히 find.element를 통해 driver.find_element( By.ID ,"AKCKwd").sendkeys("검색어") 와같이 사용할 수는 없는 것 인지요?
안녕하세요. 답변 감사드립니다. 전체 코드를 첨부하여 다시 문의글 작성하였습니다. 쿠팡 광고상품과 로켓상품도 표기하고자 합니다. if len( link.select (".ad-badge-text")) > 0: print("광고상품") 를 아래와 같이 수정하면 될까요? 해봤는데 아무표기가 안되서요. if len( link.select ("span.badge rocket")) > 0: print("로켓상품") 그리고 광고상품 로켓상품 둘다 표현하고자 하면 아래와 같이 표기하면 될까요? if len( link.select (".ad-badge-text")) > 0: print("광고상품") elif len( link.select ("span.badge rocket")) > 0: print("로켓상품") 광고상품은 광고상품이라고 잘 표기가 되는게 로켓상품은 전혀 결과가 나오지 않아서요.
데이터 베이스에도 기록이 잘 들어가고 사이트 홈화면에도 잘 뜨는데 화면의 이미지가 안뜹니다. uploads파일에도 이미지 다 잘 들어갑니다. 인강과 데이터베이스를 비교해봤을 때 경로문제인것같긴한데 어떻게 수정을 해야할까요? 근데 DB경로의 역슬래시를 슬래시로 바꾸어도 안뜨고 uploads에는 사진도 잘 들어가고 사진의 경로를 봤을때도 동일해서... 왜 안뜨는걸까요? 단순히 한사진의 오류라고생각했었는데 등록한 것 모두 이렇게 되어서... 어딜 어떻게 수정해야할지모르겠어서... 일단은 깃허브링크 함께올려봅니다... 홈사이트 화면 개발자 툴 상품넣고 난뒤 DB데이터 베이스 물건 등록 후 vscode에 뜨는것 깃허브 링크: https://github.com/Dalrae03/webstudy/commit/7a5981dafabdbf009b40c0c5814e7e7c6f3ea9de https://github.com/Dalrae03/webstudy/commit/c9106654b1d6badba9ae64ce744a11da46b719a5
압축을 푼뒤 진행해도 에러가 납니다 The file is not displayed in the text editor because it is either binary or uses an unsupported text encoding.라고 나오고요 hexeditor를 깔아도 해결이 안됩니다 찾아보니 50mb를 넘는 자료를 vs코드에서 지원을 못한다고 하는데요 참고로 집에 컴퓨터가 없어 pc방 컴퓨터로 배우는 중입니다
정답은 제대로 나오긴 했는데 시간 초과라던가 하는 문제가 없을까요? 4중 for문은 생각지도 못했네요..ㅠㅠ sudoku = [list(map(int, input().split())) for _ in range(9)] def solution(sudoku): length = len(sudoku) a, b, c, = list(), list(), list() # 행열 검사 for i in range(length): row, col = list(), list() for j in range(length): row.append(sudoku[i][j]) col.append(sudoku[j][i]) if len(set(row)) != 9 or len(set(col)) != 9: return "NO" # 3x3 격자판 검사 a.extend(row[0:3]) b.extend(row[3:6]) c.extend(row[6:]) if i == 2 or i == 5 or i == 8: if len(set(a)) != 9 or len(set(b)) != 9 or len(set(c)) != 9: return "NO" a, b, c, = list(), list(), list() return "YES" print(solution(sudoku))
제가 다음과 같이 코드를 작성했는데, 100%까지 가다가 틀립니다.. 어떤게 문제일까요? 반례를 제시해주실 수 있나요? 감사합니다. https://www.acmicpc.net/problem/1068 import sys input = sys.stdin.readline n = int(input()) g = list(map(int, input().split())) m = int(input()) cnt = 0 def DFS(x): g[x] = -1 for i in range(n): if g[i] == x: DFS(i) DFS(m) for i in range(n): if g[i] != -1 and i not in g: cnt += 1 print(cnt)
최근에 다시 자바스크립트로 돌리면서, 기존에 파이썬으로 했던 것들 다시 모두 자바스크립트로 풀어보면서 문제 풀어보니, 발견했습니다. 이거 첫번째 가정을, 그리디로 접근하면 해결 안되는 문제인것같습니다. 이후 가정들은 당연히 그리디 관념으로 최적값 찾을 수 있는데, 첫번째 가정부터 그리디로 접근하면 해결되는 문제가 아니라서 어긋나기때문에, 그리디관념이 통하지 않는 문제인것같습니다. 완전탐색해버리거나, 시간 더 줄이려면 백트래킹 가지치기 해야하는 문제인것같습니다. 입력입니다! 7 172 67 183 65 179 61 178 62 177 63 170 72 181 60 기존 풀이(무조건 183선발) 가 내주는 답 : 3 감독 현수가 원할 것 같은 답 : 6 그리디로 가장 키 큰 사람 무조건 선발하는 과정이 풀이에서 오류인것같습니다. 183 선발 가정하고 cnt 값 구하고, 그다음 181 선발 가정하고 cnt값 구하고, 쭉 다음 순으로 선발 가정하고 cnt값 구하는데, 만약 어떤 사람 선발 가정하고 cnt값 구하는데 남은 사람 수 다 합해도 기존 Max cnt보다 적을 경우, 백트레킹 가지치기로 break 혹은 return 끊어버리는게 맞는것같습니다. 풀이1. 이중포문 const input = require("fs") .readFileSync("input.txt") .toString() .trim() .split("\n"); const n = parseInt(input[0]); const arr = Array.from(Array(5), () => []); for (let i = 0; i < n; i++) { arr[i] = Array.from(input[i + 1].trim().split(" ")).map((v) => parseInt(v)); } function solution(n, arr) { arr.sort((a, b) => b[0] - a[0]); let cnt = 0; let largest = 0; let res = 0; for (let i = 0; i < n; i++) { largest = arr[i][1]; cnt += 1; if (res >= n - i) { break; } for (let j = i + 1; j < n; j++) { if (arr[j][1] > largest) { largest = arr[j][1]; cnt += 1; } } res = Math.max(res, cnt); cnt = 0; } console.log(res); } solution(n, arr); 풀이2. DFS const input = require("fs") .readFileSync("input.txt") .toString() .trim() .split("\n"); const n = parseInt(input[0]); const arr = Array.from(Array(5), () => []); for (let i = 0; i < n; i++) { arr[i] = Array.from(input[i + 1].trim().split(" ")).map((v) => parseInt(v)); } let cnt = 0; let res = 0; //const list = []; function DFS(s, weight) { if (s < 0) return; if (cnt + n - s <= res) { cnt -= 1; s -= 1; return; } for (let i = s; i < n; i++) { if (arr[i][1] > weight) { cnt += 1; //list.push(arr[i][1]); DFS(i + 1, arr[i][1]); //list.pop(); } } res = Math.max(res, cnt); //console.log(list); cnt -= 1; } function solution(n, arr) { arr.sort((a, b) => b[0] - a[0]); DFS(0, 0); console.log(res); } solution(n, arr);