๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
![jupyter_notebook_config.json error ์๋ฌ ์์ธ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeKyr8%2FbtrmgRVOdDq%2FvJaJNq9OKpF9Hp6ANQRIo1%2Fimg.png)
jupyter_notebook_config.json error ์๋ฌ ์์ธ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
์ฃผํผํฐ ๋ ธํธ๋ถ์์ json ํ์ผ ๊ด๋ จ ์๋ฌ๊ฐ ๋จ๋ ๊ฒฝ์ฐ ์ฃผํผํฐ ๋ ธํธ๋ถ์์, ํ์ ํ์ด์ ๊ณผ vscode์์ ์คํํ๋ ipynb ํํ์ ํ์ผ์ ์ด๋ ค๊ณ ํ๋๊น ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค The error was: SyntaxError: Unexpected end of JSON input Cannot upload invalid Notebook ๊ทธ๋ฌ๋ฉด ์ด๋ฌํ ๊ฒฝ์ฐ์๋ vscode ์์ build : ctrl + shift + b ๋ก ๋ค์ด๊ฐ์ ์ค์ ์ ๋ณ๊ฒฝํด์ค์ผํ๋ค. { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ ..
ํฌ๋กค๋ง ์ ๋ ๋ ๊ธฐ๋ฅ๋ค - ํฌ๋กค๋ฌ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
Selenium Intro ๋ธ๋ผ์ฐ์ ๋ฅผ ์ปจํธ๋กค์ ๊ฐ๋ฅํ๊ฒ ํด์ค Python ๊ฐ์ ๊ฒฝ์ฐ, 3.5 ์ด์๋ถํฐ ์ง์๋๋ฉฐ 3.6 ์ด์ ๋ฒ์ ๋ถํฐ pip ๋ก ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ ์ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ธ๋ผ์ฐ์ ๋ ํ๋จ์ ๋ฆฌ์คํธ์ ์ค์น ์ฝ๋ pip install selenium Driver ๋ค์ด๋ก๋ ๋งํฌ , ํฌ๋กฌ,์ฃ์ง,ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ Chrome https://sites.google.com/a/chromium.org/chromedriver/downloads Edge https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ Firefox https://github.com/mozilla/geckodriver/releases Safari https:/..
์ ํ๋ธ ๋๊ธ ํฌ๋กค๋ง ์๋ฌ
๋๊ธ์ด ์ ๋ง ๋ง๊ฑฐ๋, ์๋ ๊ฒฝ์ฐ ๋ชจ๋๋ฅผ ๊ณ ๋ คํด์ผํจ ์คํฌ๋กค๋ฐ๊ฐ ์ตํ๋จ๊น์ง ๋ด๋ ค๊ฐ๋ ์ฝ๋๋ ๋๊ธ์ด ์ฝํ์ง์ง ์์ ์ฒ์์๋ ๋๋ผ์ด๋ฒ ๋ฌธ์ ์ด๊ฑฐ๋ ํ๋๋ฐ, ๋๋ผ์ด๋ฒ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋์ผํ ๊ฒ์ผ๋ก ๋ง์ถฐ์คฌ๊ณ , ์ด์ ๋ ์ฐจ๋ผ๋ฆฌ ์ ํํ ์ฌ๋์ฒ๋ผ, ํด๋ฆญํด์ ๋๊ธ์๋ฅผ ๋ณด๊ณ ๊ทธ๊ฑฐ์ ๋ง๋ ์๋งํผ๋ง ์คํฌ๋กค๋ฐ๋ฅผ ๋ด๋ฆฌ๊ฒ๋ํ๊ณ , ๋๊ธ์์ ์ํ์น๋ 2000๊ฐ ์ ๋๋ก ์ ํด๋์ผ๋ฉด ์ด๋จ๊น ์ถ๋ค. ํ... ๊ฐ๊ธธ์ด ๋ฉ๋ค ์คํฌ๋กค ๋ด๋ฆฌ๋ ๊ฒ๋ ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ ์ฒด ๋๊ธ ์์ ๋๊ธ์ ์ ์ฅํ ๋ฆฌ์ํธ์ ๊ธธ์ด๋ฅผ ๋น๊ตํด์ผํ๋ ์ถ๊ธฐ๋ ํ๊ณ , ์๊ฐ์ ์ธ ๋ฉด๊ณผ ๊ธฐ์ ์ ์ธ ๋ฉด์์ ๊ณ ๋ฏผ์ด ๋ง์ ํ๋ฃจ๋ค.
![Only the following pseudo-classes are implemented: nth-of-type. ์๋ฌ(error)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6DWZK%2FbtrmbmnodAd%2FF3bwLS1WvdkqEyUYvu8IYk%2Fimg.png)
Only the following pseudo-classes are implemented: nth-of-type. ์๋ฌ(error)
๊ตฌ๊ธ์์ ํฌ๋กฌ์ ๋๋ฆฌ๋ฉด, ์ด๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ ๊ตฌ๊ธ ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ์์ ๋ฌด์์ css selector copy๋ฅผ ์คํํด์ ๋์ค๋ child ์ ํ์์ธ nth-child ๋ ์ธ์์ด ์๋๋ค๊ณ .... : ํ์๊ฐ ์๋, - ํ์๋ก ๋ฐ๊ฟ์ค๋ค ์ฝ๋ก ์ ๋ฒ๋ฆฌ๊ณ nth-of-type ์ผ๋ก ์ ๋ถ ๋ถ์ฌ์ ์์ฑํ๋ค nth of type tr:nth ->nth-of-type ์ผ๋ก ๋ฐ๊ฟ์ค๋ค. ๊ธฐ์กด์ ์ฝ๋ comments = soup.select('#count > yt-formatted-string > span:nth-chile(2)') ๋ณ๊ฒฝํ ์ฝ๋ # ๋๊ธ ์ , ์คํฌ๋กค๋ฐ๋ฅผ ๋ด๋ ค์ผ ๋ณด์ comments = soup.select('#count > yt-formatted-string > span:nth-of-type(2)') com..
![์ ํ๋ธ ์ฌ์ดํธ ํฌ๋กค๋ง(๋งํฌ, href)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWyOiX%2Fbtrl567ro78%2F8VFddASzNXbQm3V3ByPgv0%2Fimg.png)
์ ํ๋ธ ์ฌ์ดํธ ํฌ๋กค๋ง(๋งํฌ, href)
ํต์ฌ : select ๋ก ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ๋, ์์ ๊ฐ์ ๋ฆฌ์คํธ๋ก ๋ฐํ์ด๋จ!! ์ ํ๋ธ href ์ฌ์ดํธ ๋งํฌ ํฌ๋กค๋ง ํ๊ธฐ ์์์ ์์ฑ ๊ฐ์ ธ์ค๊ธฐ ์ ๋ ๋ ์ด์ฉ drver.find_element_by_xpath ์์ url1 = driver.find_element_by_xpath('/html/body/ytd-app/div/ytd-page-manager/ytd-search/div[1]/ytd-two-column-search-results-renderer/div/ytd-section-list-renderer/div[2]/ytd-item-section-renderer[1]/div[3]/ytd-video-renderer[1]/div[1]/div/div[1]/div/h3/a') url1.get_attribute('href..
'list' object has no attribute 'find_all' ์๋ฌ
# 1๋ฒ. ์ ์ฒด ๊ธธ์ด ํ์ def find_length(): print('์ ์ฒด ๊ธธ์ด ํ์ ') total = driver.find_elements_by_id('contents').find_all('ytd-video-renderer','style-scope ytd-item-section-renderer') print(len(total)) ํฌ๋กค๋ง์ ์๋ํ๋๋ฐ ์์ด์, global driver driver = webdriver.Chrome() ํฌ๋กฌ ๋๋ผ์ด๋ฒ ๊ฐ์ ๊ฒฝ์ฐ, ๊ฐ์ ๋ฐํํ๋ ํํ๊ฐ list ํํ์ด๋ฏ๋ก, beautifulsoup์ผ๋ก ์งํํด์ผํ๋ค.
[Python] TypeError: 'NoneType' object is not iterable ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ
'TypeError: 'NoneType' object is not iterable'์๋ฌ๊ฐ ํ์ด์ฌ์์ ๋ฐ์ํ๋ค๋ฉด, ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ป์ด์ค๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์๋ฌ๋ค. ๋ ๊ฐ์ง๋ก ํด๊ฒฐํ ์ ์๋ค. ํฌ๋กค๋ง์ ํ๊ณ ์๋ค๋ฉด, ์ ๋นํ ์๊ฐ์ ์ฃผ๋ ๊ฒ(time.sleep() ์ ํตํด ํ์ฌ ํ์ด์ง์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋๋ก ์ ๊ฐ์ ธ์ค๋ ์์ ์ ์๋ฃํ๋ ๊ฒ) ๊ณผ ๋ง์ง๋ง์ผ๋ก try except ๋ฌธ์ ํตํด ๊ฐ์ ๊ฐ์ ธ์ฌ๋, ๊ตฌํ์ง ๋ชปํด๋ ์๋ฌ๊ฐ ๋์ง ์๊ฒํด์ผํ๋ค. ๋
![python ํฌ๋กค๋ฌ ๋ฉํฐ์ค๋ ๋](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbenO4o%2Fbtrl6OjHuF6%2Fk48qT9mkG7RhndrssCCgMk%2Fimg.png)
python ํฌ๋กค๋ฌ ๋ฉํฐ์ค๋ ๋
python ํฌ๋กค๋ฌ๋ฅผ ๊ฐ๋ฐํ๋ฉด์, ๋ฉํฐ์ค๋ ๋์ ๋ฉํฐํ๋ก์ธ์ค๋ฅผ ๋์์ ์ฌ์ฉํด ์ฑ๋ฅ ๊ฐ์ ์ ํด๋ณธ ๊ณผ์ ์ ์ ๋ฆฌํด๋ดค๋ค. ์ฌ์ค์ ํฌ๋กค๋ฌ์ ์์ด์ ๋ฉํฐ์ค๋ ๋๋ฅผ ์ด์ฉํ๋ ค๋ฉด, ๊ฐ ์ค๋ ๋์ ๋ฐ๋ผ์ ํด๋น ์์ ๋ค์ ์ ๋๋ ์ค์ผํ๋๋ฐ, ๊ฐ๊ฐ ์ต๋ํ ๊ธฐ๋ฅ๋ณ๋ก ๋ชจ๋์ ๋ง๋ค์ด ๋์๋, ์ฝ์ง๋ ์์๋ค. ๊ทธ๋์ ๋๋ต์ ์ธ ๊ฐ๋ ๊ณผ ์ดํด์ ๋๋ก ํฌ์คํ ์ ์งํํ๋ ค๊ณ ํ๋ค. ํฌ๋กค๋ฌ ๊ฐ์ ๊ฒฝ์ฐ ๋ณดํต ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ๋ก๋ถํฐ ๋ค์ด๋ก๋ํ๋ ๋ถ๋ถ์์ ๋ณ๋ชฉ ํ์์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ค. ์ด๋ ์ฑ๋ฅ์ด ๋ง์ด ๋จ์ด์ง๋ค. ์ด๋ฅผ ๋ณธ์ธ ์ปดํจํฐ์ CPU์ ๋ฉํฐ์ค๋ ๋์ ๋ฉํฐํ๋ก์ธ์ค๋ฅผ ํ์ฉํด ์ฑ๋ฅ์ ํฅ์์์ผ๋ณด์. ๋ง์น, ๋ฌผ์ ๋ง์๊ธฐ ์ํด ์ ์ ์กฐ๊ธ์ฉ ๋ฒ๋ฆฌ๊ณ ์๋ค๊ฐ, ๋ด๊ฐ ์ ์ ํฌ๊ฒ, ๋๋ ๋๊ฐ์ ์ฌ๋์ด ์ฌ๋ฌ๋ช ์ด์ ๊ฐ์ด ๋ฌผ์ ๋ง์๋ ๊ฒ์ด ๋ฉํฐ์ค๋ ๋๋ฅผ ํ๋ค๋ผ๋ ๊ฒ์ ์ดํดํ๋๋ฐ ..
![[python] ํ์ด์ pd.concat](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGYKVw%2Fbtrl1XioE68%2FIySXUGoS4FB5DaqCUFB8q1%2Fimg.png)
[python] ํ์ด์ pd.concat
ํ์ด์ ๋ฐ์ดํฐ ํ๋ ์ ํฌ๋กค๋งํ๋ฉด์, ์ ์ฉํ๊ณ ํ์ํ๋ ํจ์๋ฅผ ์ด์ผ๊ธฐํ๋ฉด, ํ๋ค์ค ๋ชจ๋์์๋ ํนํ๋ ๋ฐ์ดํฐํ๋ ์์ ๋ง๋ค๊ณ , ์ ์ฅํ๊ณ , ํฉ์น๊ณ ๋ ๊ฒ์ ๋ง์ด ํ์๋๋ฐ, ๋ฌด์๋ณด๋ค ํฉ์น๋ ์์ ์ด ๋ง์๋ค. ์๋ํ๋ฉด ๊ฐ ํ์ด์ง๋ง๋ค ํ์ฑํ ๋ฐ์ดํฐ๋ค์ ํ๋์ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ง๋ค์ด๋๊ณ , ๊ทธ๋๊ทธ๋๋ง๋ค ๋ฐ์ดํฐํ๋ ์์ ํ์ฑํ์ฌ, ๊ธฐ์กด์ ํ์ ๊ณ์ํด์ ํฉ์น๋ ๋ฐฉ์์ผ๋ก ํ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ธฐ์กด์ ๋ฆฌ์คํธ์๋ค๊ฐ ๊พธ์คํ append๋ฅผ ํตํด ๋ฃ์ด์ ํ๋ฒ์ ํ ์๋ ์์ง๋ง, ๊ทธ๋ ๊ฒ ๋๋ฉด, ๋จ์ ์ ๋ง์ฝ์ ์ค๊ฐ์ ์์ ์ด ๋ฉ์ถ๊ฑฐ๋ ํ๋ฉด, ํด๋น ๋ฆฌ์คํธ์ ๊ฐ์ ์ ์ฅ๋์ด ์์ง๋ง, ์ผ๋ง๋ ์ ์ฅ๋์ด ์๋์ง, ๊ธธ์ด๋ ๋ง๋์ง์ ๋ํ ํ์ธ์์ ์ด ์ด๋ ต๊ณ , ์ฌ์ค์ ๋ค์ ์์ํ์ฌ์ผํ ์๋ ์๋ค๊ณ ํ๋จํ๋ค. ๊ทธ๋์ ํ๋ค์ค pandas ์ pd.concat() ๋ฅผ ๋ง์ด..
[python] ํฌ๋กค๋ง implicit wait vs time.sleep
ํฌ๋กค๋ง ํ๋ค๋ณด๋ฉด, ์ ์ ์ฝ๋ ์คํ์ ๋ฉ์ถฐ์ผ ํ ํ์๊ฐ ์๊ธด๋ค. ์ฃผ๋ ์์ธ์ 2๊ฐ์ง๊ฐ ์์ ๊ฒ ๊ฐ์๋ฐ, ์ฒซ๋ฒ์จฐ, ์ฝ๋์ ์คํ์๋๊ฐ ๋๋ฌด ๋นจ๋ผ, ์น ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์ ์ก์ด ๋๋ ค์, ์ค์ ์ฌ์ดํธ๊ฐ ์ด๋ฆฌ์ง๋ ์์๋๋ฐ ์ฝ๋๊ฐ ๋จผ์ ์คํ๋๋ ๊ฒฝ์ฐ์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์นํ๊ฒ ๋๋ค. ๋๋ฒ์งธ, ๋ฐ๋ณต์ ์ธ ํฌ๋กค๋ง ์์ ์ ์๋ฒ์ ๋ง์ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ ์ ๋ฐํ๋ ํฐ ์์ธ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ์์นซํ๋ฉด ์ฐ๋ฆฌ์ ip๊ฐ ์ ๊น ์ ์ง ๋นํ ์๋ ์๋ค. ํฌ๋กค๋ง ์์ ์ ์งํํ๋ค๊ฐ ๊ฐ์๊ธฐ ip๊ฐ ๋งํ๋ฒ๋ฆฌ๋ฉด, ์ด๋ณด๋ค ์ฌํ ๊ฒฝ์ฐ๋ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ ์ ํ ์ฌ์ด๊ฐ์ ๋ฏธํ์ด ํ์ํ ๊ฒ์ด๋ค. ๋ณธ๊ฒฉ์ ์ผ๋ก time.sleep ๋ฌธ๊ณผ implicit wait ๋ฌธ์ ๋น๊ตํ๋ฉด, ํ์คํ time.sleep ๋ณด๋ค implicit wait ์ด ์ข์ ๊ฒ ๊ฐ..