python๋ ์ข์ง๋ง nodejs๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด๋๋ฐํ์ ์๋ํ ํ๋ ค ํฉ๋๋ค. ์ค๋ ๋ด์ฉ์๋ ๋ก๊ทธ์ธ๊น์ง๋ง ๊ธฐ์ฌํ๊ณ , ์์์ ๋ง๋ณด๊ธฐ๋ก ์ํ ์์ ๋ก ๊ณต๊ฐ ํ๊ฒ ์ต๋๋ค ์ด๋ณด์๋ ์ด๋ ค์ธ ์ ์์ง๋ง ์ต๋ํ ๋ง์ ์์ ์ ํตํด ์ฝ๊ฒ ํ ์ ์๋๋ก ์์ฑํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. ์ ์ PC ํ๊ฒฝ์ Mac์ bigsur(OS 11) ์ ๋๋ค.
Node JS ,express ํจํค์ง๋ก ์น์๋ฒ ๊ตฌ๋ํ๊ธฐ
์น์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ฒ๋ ๋๊ธฐ ์นด๋ทฐ ์๋ํ๋ฅผ ์๊ฐํ๋ค๊ฐ ๋ณดํต์ Selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ฌธ์ node ,python์ ์ฌ์ฉํด์ ์น์ ์ปจํธ๋กค ํ๋๋ฐ ์ด์ฐจํผ ๋ค ๊ตฌ๊ธ์์ ๋ง๋ ๊ฑฐ๋๊น GAS (Google App Script) ๋ก Chrome์
odaily.tistory.com
1๋จ๊ณ .NodeJS์ Visual code ์ค์น
๐ ์ ๋งํฌ๋ฅผ ๋ณด์๋ค๋ฉด visual code ํ๋ก๊ทธ๋จ ์ค์น์ nodejs ๋ค์ด๋ก๋ ํฉ๋๋ค. express install์ ์ํด๋ ๋ฉ๋๋ค
2๋จ๊ณ. Selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Chrome driver๋ฅผ ์ค์น
ํฐ๋ฏธ๋ ์คํ๋ฐฉ๋ฒ : command + space > ํฐ๋ฏธ๋ ๊ฒ์ํ์ฌ Selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํฉ๋๋ค.
npm install selenium
- Chromedriver ์ค์น ํ ํ์ผ ์์น ์ด๋ํฉ๋๋ค.(๋ค์ด๋ก๋ ๋งํฌ : https://chromedriver.storage.googleapis.com/index.html?path=100.0.4896.60/)
mv chromedriver /usr/local/binโ
* ์๋๋ ๋ช ๋ น์ด๋ก ์ค์นํด๋ ๋๋๋ฐ, ๊ฐํน ๋ฒ์ ์ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด ๋งํฌ๋ก ์ ๋ฌํฉ๋๋ค.๋ค๋ฅธ ์น๋ธ๋ผ์ฐ์ ๋ ๋ง์ด ์ฌ์ฉํ์ง๋ง ์ฐ๋ฆฌ๋ Chrome์ด ์ต์ํ๊ธฐ ๋๋ฌธ์ ํฌ๋กฌ์ผ๋ก driver๋ฅผ ์ค์นํฉ๋๋ค.
brew install --cask chromedriver
3๋จ๊ณ. visual code ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋ ํด๋๋ฅผ ์ด๊ณ ์๋ก์ด ํ์ผ ์์ฑ
3-1. ๋ฌธ์ ์์ฑ ๋ฒํผ์ ๋๋ฆ
๋๋ค.
3-2. selenium_test.js ํ์ผ์ ์์ฑํ๋ค. ํ์ฅ์๋ ๊ผญ js๋ก ์ง์ ํฉ๋๋ค.
3-3. ์๋ ์์ค๋ฅผ selenium_test.js ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ๊ณ CTRL+S(์ ์ฅ)ํฉ๋๋ค.
const webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until,
Key = webdriver.Key;
const driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
driver.get('https://creators.kakao.com/channel/๋ณธ์ธ์ฑ๋ID/board/create').then(function(){
let inputId = driver.findElement(By.css('input#id_email_2'));
inputId.sendKeys('์นด์นด์คID');
let inputpw = driver.findElement(By.css('input#id_password_3'));
inputpw.sendKeys('๋น๋ฐ๋ฒํธ', Key.ENTER);
});
๐จ ์ ์์ค ์ฐธ๊ณ ์ ์ฃผ์ ์ฌํญ๐จ
- ๋ณธ์ธ ์นด์นด์ค๋ทฐ ์ฑ๋ ID๋ฅผ ์ฐพ์์ ์
๋ ฅํฉ๋๋ค.
- ๋ณธ์ธ ์นด์นด์ค ๋ก๊ทธ์ธ ID๋ฅผ ์
๋ ฅํฉ๋๋ค
- ๋ณธ์ธ ์นด์นด์ค ๋ก๊ทธ์ธ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํฉ๋๋ค.
๐ ์นด์นด์ค 2๋จ๊ณ ์ธ์ฆ์ ํ์ด์ผ ํ๋ค. ์นด์นด์ค ๋ฉ์์ง๋ก ๋ก๊ทธ์ธ ์ ๋ณด๋ ๋ฐ์๋ณผ ์ ์์ต๋๋ค.
- ์นด์นด์ค ์ค์ > ๊ฐ์ธ/๋ณด์/ > ์นด์นด์ค ๊ณ์ > 2๋จ๊ณ ์ธ์ฆ > ํด์ ํ๊ธฐ
4๋จ๊ณ. ํฐ๋ฏธ๋์ ์คํํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น๋ ์์น๋ก ์ด๋ ํ์ฌ ์๋ ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ์๋ ๋ก๊ทธ์ธ ์ฑ๊ณต
- ๋ช ๋ น์ด๋ ์๋์ ๊ฐ์ต๋๋ค.
//์์น ์ด๋
cd node_modules
cd selenium-webdriver
//ํ์ผ ์คํ
node selenium_test.js
๋ง๋ณด๊ธฐ ์์
[์นด์นด์ค๋ทฐ] ๋ณด๋ ์๋ ๋ฐํ 4๋จ๊ณ, ์ ํ๋ธ(Youtube) API ์ฌ์ฉํ์ฌ ๊ฒ์ ํค์๋๋ก ์์ ๊ฐ์ ธ์ค๊ธฐ , googl
์นด์นด์ค๋ทฐ ์๋ ๋ฐํ์ ๊ณ ๋ฏผํ๋ฉด์ ๋ค์ ๋ด์ค N๊ฐ, ๋ค์ด๋ฒ ๋ด์ค N๊ฐ, ํฐ์คํ ๋ฆฌ N๊ฐ, ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ N๊ฐ, ์ ํ๋ธ N๊ฐ ์ด๋ ๊ฒ ์ค์ ํ์ฌ ๋ฐํ ๊ฐ๋ฅํ๋๋ก ์๊ฐํ์๋ค. ๋งค์ผ 00:00๋ฉด ์๋์ผ๋ก playlist ๋ณด๋
odaily.tistory.com
[์นด์นด์ค๋ทฐ] ๋ณด๋ ์๋ ๋ฐํ 5๋จ๊ณ, ์๋ ๋ฐํ (์ค๋ฅ๊ฐ ์ข ์ข ๋ฐ์ํ๋ ์ฝ๋)
์ง๋ 3์ ๋ง์ ๋ก๊ทธ์ธ๊น์ง๋ง ์์ ํ๊ณ , ๊ทธ ์ดํ ์์ ์ ๋ํด ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค. ์์ ์ ํ์ฌ ์๋๋ฐํ์ ํ๋๋ฐ๋ ๋ณด๋๊ฐ ์ ํ์ง์ด ๊ฑธ๋ ธ์ต๋๋ค ๊ทธ๋์ ๋ ธ์ถ์๊ฐ 1/1000์ผ๋ก ์ค์ด์ ์์ํ์ง๋ง, ๋ค
odaily.tistory.com
ํด๋น ์์์ ์นด์นด์ค ๋ก๊ทธ์ธ ํ ์ฑ๋์์ ์ ๋ชฉ/๋ด์ฉ/๋งํฌ๊น์ง ๋ด์๋ณด๋ ๋ด์ฉ์ ๋๋ค. ์ง๊ธ๋ ๊พธ์คํ ์์ ํด๋ณด๊ณ ์์ต๋๋ค. ๋ค๋ง ์ ์ ์ ์ฅ์์ ์ด๋ป๊ฒํด์ผ ์ ๋ง ํธ๋ฆฌํ ๊ธฐ๋ฅ์ผ๋ก ๋์ํ ์ง์ ๋ํ ์๊ฐ์ด ๋ง์ 4~5๋จ๊ณ ๊ฒ์๊ธ์ด ๋ฆ์ด์ง๋ ์ ์ํด๋ถํ๋๋ฆฝ๋๋ค.
๋๊ธ