inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

puppeteer waitFor 이제 못쓰나요?

미해결

Node.js로 웹 크롤링하기

puppeteer waitFor 이제 못쓰나요? 자동완성어로도 안 만들어지고, 예제처럼 반영도 안돼요 waitForTimeout 이걸 써야 반영되는데, 이것도 이제 지원안한다는 문구가 뜨네요

  • puppeteer
  • nodejs
  • 웹-크롤링
  • javascript
김형 댓글 2 좋아요 1 조회수 575

cheerio deprecated

미해결

Node.js로 웹 크롤링하기

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" }

  • deprecated
  • puppeteer
  • cheerio
  • nodejs
  • 웹-크롤링
  • javascript
양진영 댓글 2 좋아요 0 조회수 1179

for of와 Promise.allSettled 질문

미해결

Node.js로 웹 크롤링하기

exports . test = async () => { const work = xlsx . readFile ( path . join ( __dirname , "youtuber.xlsx" )); const workData = work . Sheets . url ; const result = xlsx . utils . sheet_to_json ( workData ); let array = []; for ( const [ i , e ] of result . entries ()) { array . push ( e ) } try { const browser = await puppeteer . launch ({ headless : false , args : [ "--window-size:1920,1080" ], }); await Promise . allSettled ( array . map ( async ( e ) => { try { const page = await browser . newPage (); await page . setUserAgent ( agent ); await page . setViewport ({ width : 1080 , height : 1080 , }); await page . goto ( e . url , { waitUntil : "networkidle2" , }); await page . waitForSelector ( "#channel-header-container img" ); const result = await page . evaluate (() => { const channelName = document . querySelector ( "#text-container yt-formatted-string" ). textContent ; const image = document . querySelector ( "#channel-header-container img" ). getAttribute ( "src" ); const subscriber = document . querySelector ( "#meta yt-formatted-string[id=subscriber-count]" ). textContent ; const activity = document . querySelector ( "#items ytd-grid-video-renderer:first-child #metadata-line span:nth-child(2)" ). textContent ; return { channelName , image , subscriber , activity , } }); console . log ( result ); } catch ( err ) { console . log ( err ); } })); } catch ( err ) { console . error ( err ); } } for of 반복문은 처음과 끝의 코드가 종료가 돼야 다음 반복문을 돌고 Promise.allSettled는 모든 작업을 동시에 처리해서 둘의 차이는 순서 보장되냐 안되냐의 차이로 배웠습니다. 위 코드는 Promise.allSettled로 동시에 10개의 사이트에 접속하여 태그들을 긁고 리턴하는 함수입니다. 태그의 textContent는 모두 긁는데 img 태그의 src 값은 array.map에 가장 처음(0) 사이트만 긁어옵니다. waitForSelector를 사용하여 기다렸는데도 비동기라서 그런지 원인을 잘 모르겠습니다.(for of 문은 됩니다)

  • puppeteer
  • nodejs
  • Promise.allSettled
  • javascript
  • forof
  • 웹-크롤링
  • puppeteer
집중하기 매우 어려움 댓글 1 좋아요 0 조회수 417

readline 으로 사용자 입력을 기다린 후 puppeteer 코드 실행하기

미해결

Node.js로 웹 크롤링하기

코드 설명 : 사용자의 입력을 받아 입력 데이터를 검색하는 프로그램 11번가 주소로 이동 > 검색창 기다리기 > inputText() 로 입력받기 (inputText.js) > searchText에 저장된 입력데이터를 typing하기 > 검색버튼 누르기 첫번째 사진 15번부터 문제가 생긴듯 합니다. 문제는 입력을 기다리기 전에 밑에 코드들을 시작합니다. 이것을 해결하기 위해 readline-sync npm을 사용해 보았지만 인코딩오류(찾아봤지만 해결이 안됨)때문에 안되더라구요ㅠㅠ 1. 사용자가 입력할 때까지 기다리기 2. 입력한 데이터로 검색하기 이 기능을 구현하려면 어떻게 해야 할까요???

  • puppeteer
  • readline
  • nodejs
  • 웹-크롤링
  • javascript
  • puppeteer
strength C_ 댓글 1 좋아요 0 조회수 598

안녕하세요~ puppeteer 실행에 대해 질문이 있습니다!

미해결

Node.js로 웹 크롤링하기

"2-1 puppeteer 시작하기" 강좌를 보는 중에 아래와 같은 코드를 따라 실행중 오류가 나는 이슈가 있었습니다 const browser = await puppeteer. launch ({ headless : false , 오류 메세지도 명확하지 않아 구글링을 해본 결과 옵션값에 executablePath 을 추가하여 chrome 파일의 경로를 명시해줬는데 이부분을 제로초님처럼 따로 옵션값을 기입하지 않고 해결할수 있는 방법이 궁금합니다~ const browser = await puppeteer. launch ({ headless : false , executablePath : "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" }) ;

  • puppeteer
  • 웹-크롤링
  • puppeteer
  • nodejs
  • javascript
하루 댓글 2 좋아요 0 조회수 470

인기 태그

인프런 TOP Writers

주간 인기글