55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
-
Node.js로 웹 크롤링하기
페이스북 로그인
<button value="1" class="_42ft 4jy0 6lth 4jy6 4jy1 selected 51sy" name="login" data-testid="royallogin_button" type="submit" id="u_0_c_Cc">로그인</button> document.querySelector('#u_0_9_LS').click();위에 같이 실행하였는데 id값이 계속 변동하여 로그인 안되어서 document.querySelector('._42ft _4jy0 _6lth _4jy6 _4jy1 selected _51sy').click();class로 했는데도 로그인 안되네요 ??방법이 없나요?
-
Node.js로 웹 크롤링하기
2019년도 영상이라 error가 나는 걸까요? 2-4. csv에 출력하기에서 error
v16.19.18.19.3mac 2-4. csv에 출력하기 Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.attachToTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Connection.createSession (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:153:36)at Target._sessionFactory (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:116:75)at Target.page (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Target.js:73:32)at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20-- ASYNC --at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20at async Promise.all (index 0)at async crawler (/Users/youssi/crawler/lecture/index.js:13:5)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.attachToTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Connection.createSession (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:153:36)at Target._sessionFactory (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:116:75)at Target.page (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Target.js:73:32)at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20-- ASYNC --at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20at async Promise.all (index 1)at async crawler (/Users/youssi/crawler/lecture/index.js:13:5)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.attachToTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Connection.createSession (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:153:36)at Target._sessionFactory (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:116:75)at Target.page (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Target.js:73:32)at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20-- ASYNC --at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20at async Promise.all (index 2)at async crawler (/Users/youssi/crawler/lecture/index.js:13:5)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5) index.jsconst parse = require('csv-parse/lib/sync'); const stringify = require('csv-stringify/lib/sync'); const fs = require('fs'); const puppeteer = require('puppeteer'); const csv = fs.readFileSync('csv/data.csv'); const records = parse(csv.toString('utf-8')); const crawler = async () => { try{ const result = []; const browser = await puppeteer.launch({ headless: false }); await Promise.all(records.map(async (r, i) => { try{ const page = await browser.newPage(); await page.goto(r[1]); const scoreEl = await page.$('.score.score_left .star_score'); if (scoreEl) { const text = await page.evaluate((tag) => { return tag.textContent; }, scoreEl); console.log(r[0], '평점', text.trim()); result.push([r[0], r[1], text.trim()]); } await Page.waitFor(3000); await page.close(); } catch (e) { console.error(e); } })); await browser.close(); const str = stringify(result); fs.writeFileSync('csv/result.csv', str); } catch (e) { console.error(e); } }; crawler(); package.json{ "name": "lecture", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index" }, "author": "youssi", "license": "MIT", "dependencies": { "axios": "^1.3.4", "cheerio": "^1.0.0-rc.12", "csv-parse": "^4.4.6", "csv-stringify": "^5.3.0", "puppeteer": "^1.13.0", "xlsx": "^0.18.5" } }
-
Node.js로 웹 크롤링하기
안녕하세요! for of와 Promise.all 차이점에 관해서 질문드려요!
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 안녕하세요! 1-5 Promise.all 과 for of 문의 차이 강의 듣고 궁금한 점이 생겨서 질문드립니다!Promise.all 이 동시에 진행되어 속도가 빠른 대신 순서가 보장되지 않는다고 하셨고 for of는 순서대로 요청을 보내고 응답을 받기 때문에 속도가 좀 느리다고 하셨는데현업에서 많은 양의 데이터를 순서대로 크롤링 해야하는 경우에 Promise.all로 빠르게 크롤링 데이터를 받아와서 정렬을 하는게 나은가요 아니면 for of로 느리더라도 순서대로 데이터를 받아오는게 나은가요?
-
Node.js로 웹 크롤링하기
대량 요청 처리 방법
내 서버의 API로 많은 사람이 동시에 요청을 하는 경우에 어떻게 처리해야 할까요?? 여러사람이 한꺼번에 요청하면 서버에서도 특정 웹서버로 한꺼번에 크롤링 요청이 가면 IP가 차단될 수 있을것 같아서요.axios (or fetch, request)로 크롤링 했을때 한꺼번에 요청하면 IP가 차단됨.puppeteer로 크롤링 했을때 한꺼번에 요청하게 되면 앞에 puppeteer가 완료된 후 진행되는지..
-
Node.js로 웹 크롤링하기
구글 패스워드 자동입력시 오류
await page.evaluate((password) => { document.querySelector('[aria-label="Enter your password"]').value = password }, process.env.youtube_pass)구글 패스워드 쪽에서 입력이 안될때는 이벨류에이트에서 강제로 값을 넣어주라고 하셔서 이렇게 하는데.. 콘솔창에서는 정상적으로 입력이 되는데, 코드로 자동화 입력시에는 먹통이 되는 현상이 있습니다. ㅠ
-
Node.js로 웹 크롤링하기
반복크롤링 할 때 아래 질문주신분 하고 약간 형태가 달라요
반복크롤링 할 때 친구추천 그런 부분은 안뜨는거 같더라구요저는 그런 부분이 뜨지도 않는데, 스크롤이 멈추면서 에러나요에러의 이유는document.querySelector('article:first-child')이부분이 null 표시로 나와요콘솔창에 확인 해보면 null로 뜨는데, 직접 소스코드를 보면 정상적으로 보이거든요수동으로 마우스를 스크롤해주면 또 정상적으로 자동스크롤이되구요 데이터 2개정도 가져오면 바로 에러가 떠요위에 분처럼 2번정도 데이터 가져오면 에러뜨지만 저는 친구추천 그런 부분은 안뜨는거 같아서요아티클 이부분이 왜 검색이 안되는지를 모르겠네요..
-
Node.js로 웹 크롤링하기
인스타그램 돔의 value 값으로 쿼리셀렉터 찾을 수 있나요?
_0000 이런 클래스가 많고,중복되는 이름이 거의 대부분이라유니크한 이름으로 쓰고 싶은데요 보니까 버튼이나 텍스트에 특정 유니크한 값이 들어가 있는 경우가 많더라구요딱히 구글링해도 찾아보기가 어려운데, 애초에 태그 분석시 div나 span 등 태그 안에 있는 값으로 쿼리셀렉터 값을 찾을 수 있는 방법은 없는지 궁금합니다. 아래 스샷처럼 클래스 네임이 아니라, <Facebook으로 로그인> 이 문자열을 찾아서 여기 태그를 가져오고 싶어서요
-
Node.js로 웹 크롤링하기
페이스북 로그인시 돔이 생성 안되는 문제
페이스북 로그인시 돔이 생성 안되는 문제가 있습니다.로그인 클릭하고 나면 1번째 스크린샷처럼 그냥 아무것도 페이지 표시가 나오지가 않아요.홈브류 통한 맥용 크로미움 설치 후 페이스북 로그인시 나타나는 현상입니다.ㅠ오류 메시지는 아래와 같아요ReferenceError: document is not defined ----추가 테스트로 수동으로 로그인 하면 위와 같은 하얀색 창이 뜨지 않아요. 크로미움에서 해봐도 정상적인데, 자동화로 로그인 할때만 위 현상이 나타나요
-
Node.js로 웹 크롤링하기
hyperfreed_story_id 사용불가라 태그가 많이 바뀌어서
hyperfreed_story_id 사용불가라 태그가 많이 바뀌어서 제가 직접 찾아봤을때는data-pagelet 이게 각각 잘 나눠져 있어서 가져올려고하는데,콘솔창에서는 데이터가 잘 보여서 사용할려고 했더니막상 코딩시에는 값을 가져오지 못하는 현상이 발생되고 있어요 콘솔에는 출력이 잘 되는데 왜 코딩하면서 이벨류에이트에서는 사용이 안되는걸까요?------태그가 많이 바뀐 관계로 추가로 id 가져오는 부분은 html내에서 찾지 못해서 가져오지 못해서, 아이디 가져오는 방법은 새롭게 다시 찾아보고는 있는데, 딱히 가져올 만한 방법을 아직은 못찾고 있어요
-
Node.js로 웹 크롤링하기
스파이스 사이트만 접속시 튕김현상이 있어요
const puppeteer = require('puppeteer');const crawler = async () => { try { let browser = await puppeteer.launch({ headless: false, args: ['--window-size=1920,1080', '--disable-notifications'], }); let page = await browser.newPage(); await page.setViewport({ width: 1080, height: 1080, }); await page.goto('http://spys.one/free-proxy-list/KR/'); } catch (e) { console.error(e); }};crawler(); 아예 이부분만 작성 해 봐도 오류가 떠요Error: Navigation failed because browser has disconnected!해당 사이트가 잠깐 나왔다가 디스커넥티드되면서 종료되어져 버려요다른사이트는 전혀 이상없는데, 위 스파이스 사이트만 접속시 튕김현상이 있어요
-
Node.js로 웹 크롤링하기
오류로 크롤링이 안되서 proxies 리턴이 안되는 현상
const puppeteer = require('puppeteer')const dotenv = require('dotenv')const {config} = require("dotenv");dotenv.config()const crawler = async () => {try {const browser = await puppeteer.launch({ headless: false, args: ['--window-size=1920, 1080'] })const page = await browser.newPage()await page.setViewport({width: 1080,height: 1080,})await page.goto('http://spys.one/free-proxy-list/KR/')const proxies = await page.evaluate(() => {const ips = Array.from(document.querySelector('tr > td:first-of-type > .spy14')).map((v) => v.textContent)const types = Array.from(document.querySelector('tr > td:nth-of-type(2)')).map((v) => v.textContent)const latencies = Array.from(document.querySelector('tr > td:nth-of-type(6) > .spy1')).map((v) => v.textContent)return ips.map((v, i) => {return {ip: v,type: types[i],latency: latencies[i],}})})console.log(proxies)} catch (err) {console.error(err)}}crawler() 위 코드를 실행하면 프록시 사이트 들어가자마자 크로미움 브라우저가 갑자기 닫히면서Error: Navigation failed because browser has disconnected!위 와같은 에러메시지를 유발합니다.코드가 똑같은데도 왜이런걸까요? ㅠ
-
Node.js로 웹 크롤링하기
await page.waitForResponse 에서 login_attempt 없어졌어요
await page.waitForResponse 에서 login_attempt 없어졌어요현재 시점의 페이스북 로그인 페이지에 변화가 큰거 같아요일단 우리의 클롤링 예제를 위한 login_attempt 네트워크에서 소스가 안보이는데, 어떤걸로 대체 확인이 가능할까요?
-
Node.js로 웹 크롤링하기
현재 페이스북 로그인 화면이 좀 바뀌었는데,
페이스북 로그인 버튼 예를 들어 document.querySelector('#loginbutton').click() 강좌의 이런 라벨이 사라졌어요버튼 바로 위가 div 태그인데, div 태그를 클릭하면 반응이 없고,버튼 클래스 이름의 태그를 클릭 해야지만 반응이 있네요 이 부분은 어떻게 다루는게 좋을까요?
-
Node.js로 웹 크롤링하기
3-3 퍼페티어 스크린샷 기능 중 클립 소개에서 궁금한 사항
3-3 퍼페티어 스크린샷 기능 중 클립 소개에서 궁금한 사항입니다.크롤링할때 같은 동작을 하더라도 키워드마다 배치가 조금씩 다르기 때문에 좌표로 스크린샷하는것은 사실상 불가능합니다.그렇다고 전체페이지를 하는것도 리스크가 심합니다.딱 원하는 구간에 대한 스크린샷이 중요한데,결론은원하는 태그, 원하는 엘리먼트 딱 그부분예) div#id / 이런식으로 이구간만 찍고 싶은데 이부분 소개가 없어서요 이게 정말 꿀기능일 텐데 퍼페티어로 가능할지 아니면 다른 것으로라도 가능할지 궁금해요
-
Node.js로 웹 크롤링하기
puppeteer waitFor 이제 못쓰나요?
puppeteer waitFor 이제 못쓰나요? 자동완성어로도 안 만들어지고, 예제처럼 반영도 안돼요waitForTimeout 이걸 써야 반영되는데, 이것도 이제 지원안한다는 문구가 뜨네요
-
Node.js로 웹 크롤링하기
Error: invalid column -1
도저히 어떤 부분이 틀린지 모르겠어서 질문 남깁니다.. 이 부분은 깃헙에 없는건가요?? C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095function encode_col(col) { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; } ^Error: invalid column -1 at encode_col (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095:46) at write_ws_xml_data (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:14999:52) at write_ws_xml (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:15077:11) at write_zip_xlsx (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23532:25) at write_zip (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23326:9) at write_zip_type (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23753:10) at writeSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23891:22) at Object.writeFileSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23914:9) at crawler (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\index.js:76:8) at processTicksAndRejections (node:internal/process/task_queues:96:5)C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture>
-
Node.js로 웹 크롤링하기
document.querySelectorAll이 안되는 사이트
유튜브 음악 차트 사이트로 연습을 하려고 하는데 선택자로 선택을 하려해도 이상한 function 정보가 나오네요. 이렇게 막아놓은(?) 사이트는 크롤링을 할 수 없나요?https://charts.youtube.com/charts/TopSongs/kr?hl=ko + 이런거는 크롤링 방지나 보안 등을 위해 내장 함수(?)들을 의도적으로 바꿔놓은 것인가요? 감사합니다.
-
Node.js로 웹 크롤링하기
proxy 서버로 네이버 접근시 Error: net::ERR_TUNNEL_CONNECTION_FAILED 발생
connection fail이라 아예 연결 자체가 안되는거 같아 혹시 프록시 ip가 문제인가 고민해봤습니다. 문제 해결을 위해 한것const filtered = proxies.filter((v) => v.type.startsWith('HTTP')).sort((a,b) => a.latency - b.latency)1. 하나의 ip는 다운됫을수도 있기에 filtered[0].ip 뿐만아닌 차선책으로 filtered[1].ip, filtered[2].ip.. 등 여러 ip를 시도했지만 모두 같은 에러를 반환2. proxy-chain이라는 라이브러리를 인스톨하여 해당 라이브러리에 있는 메소드를 사용let fastestIp = await proxyChain.anonymizeProxy(`http://${filtered[0].ip}`) browser = await puppeteer.launch({headless:false, args:['--window-size=1920,1080', '--disable-notifications', `--proxy-server=${fastestIp}`]}) 1번 2번 모두 같은 에러를 반환하며 실패하였습니다. 해당 에러가 정확하게 어떤에러인지 또 어떤것을 시도해 봐야할지 조언 부탁드립니다.
-
Node.js로 웹 크롤링하기
cheerio deprecated
const crawler = async() => { await Promise.all(records.map( async(r) => { const response = await axios.get(r.링크) if(response.status === 200){ const html = response.data const $ = cheerio.load(html) const text = $('.score.score_left .star_score').text() console.log(r.제목,'평점',text) } } )) }1-4 axios-cheerio로 첫 크롤링하기 강의중 const $ = cheerio.load시 cheerio에 빗금이 처지며 deprecated라는 표시가 뜹니다. 무시하고 그냥 해도 결과는 나오지만 구글링을 해봐도 deprecated대신 사용할수있는게 없어 그냥 해야하나 아니면 다른 방법으로 대체해야하나 궁금합니다.package.json은 아래와 같습니다."dependencies": { "axios": "^1.1.3", "cheerio": "^1.0.0-rc.12", "nodemon": "^2.0.20" }
-
Node.js로 웹 크롤링하기
프록시 서버 연결 문제
이전 질문에도 있었는데 프록시 서버 연결이 안되는데 혹시 이유가 무엇일까요?코드를 그대로 작성해서 하여도 접속이 안되네요.ip를 1~2개가 아니라 10개 이상을 다른 것들로 해봤는데도 안되서 프록시 서버의 문제보다도 다른 문제가 있는 게 아닐까 싶어서요.(이전 문제들에 답변에는 다른 프록시 서버를 써보라고 하셔서 10개 이상 시도를 해본 뒤 질문드립니다(다른 사이트의 프록시 서버도 사용해보았습니다). 포트번호를 넣어서도 해보고 빼보고도 해보고 http도 붙여보고 별 난리를 다 해봤네요)감사합니다.+) 결과 화면감사합니다.