[Puppeteer] Cheerio 모듈을 활용한 데이터 스크랩핑[Puppeteer] Cheerio 모듈을 활용한 데이터 스크랩핑
Posted at 2019. 6. 20. 21:10 | Posted in Node.js/Puppeteer■ 퍼펫티어를 이용한 유튜브 채널 스크랩핑
유튜브 API가 제대로 동작하지 않게 되었다.
cheerio-httpcli 모듈로 YouTube 페이지의 데이터를 스크래핑 하려 해보았지만.
유튜브의 경우 cheerio-httpcli를 통한 단순한 데이터 스크랩핑을 해보니
많은 수의 json형태의 데이터를 가져오기에
포기하던 차에 puppeteer를 활용해 보기로 했고
결과는 어느정도 만족할 수 있는 수준이었다.
위와 같이 유튜브 특정 채널의 업로드 영상을 가져와 보려고 한다.
# 소스코드
puppeteer_ra_om_musiq.js |
const puppeteer = require( "puppeteer" ); const cheerio = require( "cheerio" ); puppeteer.launch( { headless : true } ).then(async browser => { const page = await browser.newPage(); await page.goto( "https://www.youtube.com/user/RaOmMusiq/videos/", { waitUntil : "networkidle2" } );
// YouTube 페이지의 <ytd-grid-renderer> 태그 안의 내용을 가져온다. const html = await page.$eval( "ytd-grid-renderer", e => e.outerHTML ); // console.log(html); const data = cheerio.load( html );
data( "a.ytd-grid-video-renderer" ).each( function( key, val ) { // substring을 사용하여 불필요한 값을 잘라낸다. var videoId = data( val ).attr( "href" ).substring( 9, 20 ); var videoTitle = data( val ).text();
console.log( "VIDEO ID = ", videoId ); console.log( "VIDEO TITLE = ", videoTitle ); }); }); |
# 출력결과
위와같이 필요로 하는 YouTube 영상의 아이디 값과 타이틀 제목을 얻어오는 모습을 확인 할 수 있다.
'Node.js > Puppeteer' 카테고리의 다른 글
[Puppeteer] evaluate() 페이지 데이터 추출 (0) | 2020.05.27 |
---|---|
[Puppeteer] evaluate() 함수에 변수 전달하기 (0) | 2019.09.30 |
[Puppeteer] 페이지 클릭 및 입력 이벤트 (0) | 2019.05.10 |
[Puppeteer] 퍼펫티어에서 크롬 확장프로그램 사용하기 (2) | 2019.04.30 |
[Puppeteer] 퍼펫티어의 브라우저를 크롬으로 변경하기 (1) | 2019.04.29 |