inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js로 웹 크롤링하기

6-3. 데이터베이스 연동하기

npm start 후 error

210

이재형

작성한 질문수 6

0

 UnhandledPromiseRejectionWarning: SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client

이런 오류가 생기는데, 어떤게 문제인지 모르겠습니다.

원래 강의대로라면 crawler schema에 table이 생겨야하는데, 위 오류가 발생합니다.

mysql 설치시 validation을 설치했는데 그거 때문에 생긴 문제일까요?

코드는 다음 코드에서 돌렸습니다.

const puppeteer = require("puppeteer");
const dotenv = require("dotenv");

const db = require("./models");
dotenv.config();

const crawler = async () => {
await db.sequelize.sync();
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/");
const proxies = await page.evaluate(() => {
const ips = Array.from(
document.querySelectorAll("tr > td:first-of-type > .spy14")
).map(v => v.textContent.replace(/document\.write\(.+\)/, ""));
const types = Array.from(
document.querySelectorAll("tr > td:nth-of-type(2)")
)
.slice(5)
.map(v => v.textContent);
const latencies = Array.from(
document.querySelectorAll("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]
};
});
});
const filtered = proxies
.filter(v => v.type.startsWith("HTTP"))
.sort((p, c) => p.latency - c.latency);
await Promise.all(
filtered.map(async v => {
return db.Proxy.upsert({
ip: v.ip,
type: v.type,
latency: v.latency
});
})
);
await page.close();
await browser.close();
const fastestProxies = await db.Proxy.findAll({
order: [["latency", "ASC"]]
});
browser = await puppeteer.launch({
headless: false,
args: [
"--window-size=1920,1080",
"--disable-notifications",
`--proxy-server=${fastestProxies[0].ip}`
]
});
const browser2 = await puppeteer.launch({
headless: false,
args: [
"--window-size=1920,1080",
"--disable-notifications",
`--proxy-server=${fastestProxies[1].ip}`
]
});
const browser3 = await puppeteer.launch({
headless: false,
args: [
"--window-size=1920,1080",
"--disable-notifications",
`--proxy-server=${fastestProxies[2].ip}`
]
});
// const context = await browser.createIncognitoBrowserContext();
// const context2 = await browser.createIncognitoBrowserContext();
// const context3 = await browser.createIncognitoBrowserContext();
// console.log(await browser.browserContexts());
const page1 = await browser.newPage();
const page2 = await browser2.newPage();
const page3 = await browser3.newPage();
await page1.goto(
"https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EB%82%B4+%EC%95%84%EC%9D%B4%ED%94%BC"
);
await page2.goto(
"https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EB%82%B4+%EC%95%84%EC%9D%B4%ED%94%BC"
);
await page3.goto(
"https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EB%82%B4+%EC%95%84%EC%9D%B4%ED%94%BC"
);
// page = await browser.newPage();
// await page.goto('https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EB%82%B4+%EC%95%84%EC%9D%B4%ED%94%BC');
// await page.waitFor(10000);
// await page.close();
// await browser.close();
await db.sequelize.close();
} catch (e) {
console.error(e);
}
};

crawler();

nodejs javascript 웹-크롤링 puppeteer

답변 2

1

제로초(조현영)

MySQL 8버전을 설치하셔서 그렇습니다. 5.7버전을 설치하시거나 8버전에서는 mysql_native_password를 사용해야 합니다.

0

이재형

매번 감사합니다!

headless 궁금한게 있어요!

0

413

2

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

0

338

2

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

0

276

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

554

1

puppeteer 관련

0

598

2

6-3 proxy-database 관련

1

287

1

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

0

794

1

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

1

488

1

아래 noscript 내용입니다.

0

528

1

크롤링

0

375

1

앱 크롤링

0

1783

1

페이스북 로그인

0

544

1

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

1

461

1

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

0

440

2

대량 요청 처리 방법

0

463

1

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

0

249

1

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

0

364

2

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

0

300

1

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

0

309

1