inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js로 웹 크롤링하기

페이스북 로그아웃 관련해서 문의드립니다.

187

lilill

작성한 질문수 2

0

안녕하세요, 페이스북 로그인 로그아웃 기능을 구현하는 예제를 학습하는 도중,
해결하지 못하겠는 문제가 생겨서 질문을 남깁니다.
 
현재 아래와 같이 수업을 따라 진행하고 있습니다만,
페이스북이 로그아웃 버튼을 강의 시기에는 <li> 태그 안에 두어서 lastchild로 찾을 수 있었다면,
현재는 여러 해쉬 처리된 div class로 찾기가 너무너무 어렵습니다.
요소 검사로 찾았다 싶은 class도 중복이 너무 많거나 안이 비어있습니다.
혹시 페이스북에서 로그아웃을 '태그'를 통해 할 수 있는 새로운 방법이 있을까요?
 
await page.evaluate(()=>{
            document.querySelector('.i09qtzwb.n7fi1qx3.b5wmifdl.hzruof5a.pmk7jnqg.j9ispegn.kr520xx4.c5ndavph.art1omkt.ot9fgl3s.sx5rzos5.s45kfl79.emlxlaya.bkmhp75w.spb7xbtv').click;
      });
 
항상 강의 너무 잘 듣고 있고 좋은 강의 해주셔서 감사합니다!
 
const puppeteer = require('puppeteer');
const dotenv = require('dotenv');

dotenv.config();

const autoLogin = async () => {
    try {
        const browser = await puppeteer.launch({
            headless: process.env.NODE_ENV === 'production',
            args: ['--window-size=1600,900']
        });
        browser.userAgent(
            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.0 Safari/537.36'
        );
        const page = await browser.newPage();
        await page.setViewport({
            width: 1080,
            height: 1080
        });

        await page.goto('https://www.facebook.com');

        const id = process.env.APPLE;
        const pw = process.env.BANANA;
       
        /*
        // 방법 1: 가장 단순한 로그인 방식
        await page.evaluate((id, pw)=>{
            // 아이디 입력
            document.querySelector('#email').value = id;
            // 비밀번호 입력
            document.querySelector('#pass').value = pw;
            // 로그인 버튼 클릭
            document.querySelector('._6ltg button').click();
        }, id, pw);
        */

        // 방법 2: puppeteer를 사용한 로그인 방식
        // page.type(선택자, 입력값) : 실제로 해당 선택자에 입력하는 것으로 작동
        await page.type('#email', process.env.APPLE);
        await page.type('#pass', process.env.BANANA);
        // hover는 특정 태그 위에 마우스를 올리는 행위를 의미
        await page.hover('._6ltg button');
        await page.waitFor(800);
        await page.click('._6ltg button');
        await page.waitFor(800);


        // 알림 허용 등 팝업 없애기 -> esc 버튼을 한 번 누르기
        // page.keyboard.press()는 인자로 들어온 키를 누르는 동작을 함
        // https://github.com/wix-incubator/unidriver/blob/master/core/src/puppeteer-us-keyboard-layout.ts
        // ex) page.keyboard.press('Enter');
        await page.keyboard.press('Escape');
 
 
 
       
        await page.waitFor(1500);
        await page.close();
        await browser.close();
    }
    catch (err) {
        console.error(err);
    }
};

autoLogin();

nodejs 웹-크롤링 puppeteer javascript

답변 1

0

제로초(조현영)

https://stackoverflow.com/questions/47407791/how-to-click-on-element-with-text-in-puppeteer

이런식으로 텍스트가 로그아웃인 버튼을 찾을 수 있습니다.

headless 궁금한게 있어요!

0

414

2

6강 프록시 서버 테스트 관련하여

0

339

2

페이스북 로그인 로그아웃 자동화관련

0

277

2

3-2 axios로 이미지 저장하기에서 axios 관련 오류..

0

269

2

3-1 이미지 다운로드 준비하기 에서 선택자 구성 질문

0

250

3

2-4 csv 출력하기에서 오류 발생

0

294

3

try-puppeteer.appspot.com 을 사용할 수 없나요?

0

151

1

크롬 확장프로그램 관련 질문드립니다.

0

169

1

크롤링 자바스크립트 exe파일

0

555

1

puppeteer 관련

0

599

2

6-3 proxy-database 관련

1

288

1

크롤링을 여러개 돌리려면 어떠한 방법을 선택하는게 좋을까요?

0

794

1

네이버 영화 평점 크롤링 (axis cheerio)

1

489

1

아래 noscript 내용입니다.

0

528

1

크롤링

0

377

1

앱 크롤링

0

1783

1

페이스북 로그인

0

544

1

2019년도 영상이라 error가 나는 걸까요? 2-4. csv에 출력하기에서 error

1

461

1

안녕하세요! for of와 Promise.all 차이점에 관해서 질문드려요!

0

440

2

대량 요청 처리 방법

0

464

1

구글 패스워드 자동입력시 오류

0

250

1

반복크롤링 할 때 아래 질문주신분 하고 약간 형태가 달라요

0

366

2

인스타그램 돔의 value 값으로 쿼리셀렉터 찾을 수 있나요?

0

300

1

페이스북 로그인시 돔이 생성 안되는 문제

0

310

1