๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
![์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๊ฐ๋
์ด์ ๋ฆฌ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHQNcm%2FbtrJu4EUNuQ%2FcvJpgYcTT1yKlgGe4HRNLK%2Fimg.png)
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๊ฐ๋ ์ด์ ๋ฆฌ
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๊ธฐ๋ฐ ์ธ์ด ๊ธฐ๋ฅ, ์์ฑ ๊ฐ์ง TV๋ฅผ ์๋ฅผ๋ค๋ฉด, TV๋ ๊ฐ์ฒด(Object) ๋ฉ์๋(method) : ์ผ๋ค(), ๋๋ค(), ๋ณผ๋ฅจ ๋์ด๊ธฐ(), ๋ณผ๋ฅจ ๋ฎ์ถ๊ธฐ() ์์ฑ(Property) : ๋์ด;, ๋๋น;, ์์;, ๋ฌด๊ฒ; // ์ฝ๋ ๊ธฐ๋ณธ ๊ฐ์ฒด.๋ฉ์๋(); //๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์คํ ๊ฐ์ฒด.์์ฑ; //๊ฐ์ฒด์ ์์ฑ๊ฐ์ ๊ฐ์ ธ์ด ๊ฐ์ฒด.์์ฑ = ๊ฐ; //๊ฐ์ฒด์ ์์ฑ๊ฐ์ ๋ฐ๊ฟ ๊ฐ์ฒด์ ์ข ๋ฅ ๋ด์ฅ๊ฐ์ฒด ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด๋ชจ๋ธ(BOM, Browser Object Model) ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ (DOM, Document Object Model) ๋ด์ฅ๊ฐ์ฒด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ด์ฅ๋์ด ์์ด ํ์ํ ๊ฒฝ์ฐ ์์ฑํด์ ์ฌ์ฉ ๊ฐ๋ฅ ๋ฌธ์(String), ๋ ์ง(Date), ๋ฐฐ์ด(Array), ์ํ(Math) ๊ฐ์ฒด ๋ฑ ๋ธ๋ผ์ฐ์ ๊ฐ์ฒด ๋ชจ๋ธ(B..
![์ค์ฒฉ for๋ฌธ ์ด์ฉํ์ฌ ํ
์ด๋ธ ๋ง๋ค๊ธฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqWdLw%2FbtrJwZijQxQ%2F32KqGLEgKtkKWI5E5r5Y7K%2Fimg.png)
์ค์ฒฉ for๋ฌธ ์ด์ฉํ์ฌ ํ ์ด๋ธ ๋ง๋ค๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ์์ ๋ฅผ ํตํด ๊ฐ์ ์ตํ๋์ค์ด๋ค. ๊ฒฐ๊ณผ๋ฌผ ์ด๋ฒ ๊ฒ์์ ๋ฐฐ์ด ๋ด์ฉ 1. table ํ๊ทธ๋ฅผ ํ์ฉํ๊ธฐ 2. ํ์ tr ํ๊ทธ๋ก 3. ์ด์ td ํ๊ทธ๋ก 4. ํญ์ ํ๊ทธ๋ ์ด์์ผ๋ฉด ๋ซ๋ ํ๊ทธ๋ ๊ฐ์ด ๋ฃ์ด์ฃผ๊ธฐ 5. console.log ๋ฅผ ์ด์ฉํด์ ์ ์ถ๋ ฅ๋๋์ง ํ๋ฒ ๋ ํ์ธํด๋ณด๊ธฐ 6. ์ฐ์ฐ์ ์ฐ์ ์์์์ ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ๊ณ ์๋ : ๋์ ์ฐ์ฐ์(๋ณตํฉ ๋์ ) += ํ์ฉํด๋ณด๊ธฐ ( ๋ณ์ t์๋ค๊ฐ html ์ฃ๋ค ์ง์ด ๋์ง๊ธฐ ์์ !)
![ํ์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์์ ์ฃผ๊ธฐ(spanํ๊ทธ, pํ๊ทธ color, style ์ง์ )](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwpem1%2FbtrJt4L8qbC%2F5PY3F6NkrRX2DHL5ASyct1%2Fimg.png)
ํ์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์์ ์ฃผ๊ธฐ(spanํ๊ทธ, pํ๊ทธ color, style ์ง์ )
์ฝ๋๋ styleํ๊ทธ๋ ์ ์ฒด p ํ๊ทธ์ ํํด์ ์์์ ์ ํด์คฌ๊ธฐ ๋๋ฌธ์, ์ถํ ๋ฐ์ ํ์ ๋ฒ์งธ๋ฅผ pํ๊ทธ๋ก ์ง์ ํด๋๋ ์์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ ๋ฐ๋ก span ํ๊ทธ๋ฅผ ํ์ฉํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ํน์ span ํ๊ทธ์ style์ ์ง์ ํด์ฃผ๋ฉด์ ๋ถ๋ถ ์์ ์ด ๊ฐ๋ฅํ๋ค.
ํ์ด์ฌ ๋ฒ์ญ ํ๋ก๊ทธ๋จ (googletrans ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ conda ์ด์ฉ : 3.7๋ฒ์ ํธํ googletrans๋ผ์ด๋ธ๋ฌ๋ฆฌ : 4.0.0-rc1 ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ์๋ฌ ๋์ง ์๊ณ ์๋ ์๋จ ํ์ด์ฌ์ผ๋ก ๊ตฌ๊ธ์ ๋ฒ์ญ API๋ฅผ ์ด์ฉํ์ฌ ๋ฒ์ญ์ ํด๋ณผ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ๋จ ํ๋ฌ์ค ํ : ์ฃผํผํฐ ๋ด์ฉ์ html๋ก ๋ณ๊ฒฝ์ ์ํ ์ ์ปค๋งจ๋์ฐฝ์ jupyter nbconvert ๋ณํํ ํ์ผ๋ช .ipynb --to html In [1]: print('hello world') hello world ๋ฒ์ญ ๊ด๋ จ๊ธ ¶ ์ฐธ๊ณ : https://blockdmask.tistory.com/540 In [2]: import googletrans In [3]: translator = googletrans.Translator() In [5]: str1 = "ํ์ ๋ฌธ์๋ฅผ ์๋๋ฒ์ญํ๋ ํ๋ก๊ทธ..
![HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json> ์๋ฌ ํด๊ฒฐ๋ฐฉ๋ฒ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZrSuJ%2FbtrJpZYXkzs%2F7e6hSNyF6By1XpH8tcVHXk%2Fimg.png)
HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json> ์๋ฌ ํด๊ฒฐ๋ฐฉ๋ฒ
C:\Users\bbeee\Documents\22 Python40projects>conda create -n py37 python=3.7 Collecting package metadata (current_repodata.json): failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your ..
์ฐ์ฐ์ ์ฐ์ ์์
์ผ๋ฐ์ ์ธ ์ฐ์๋ฅผ ๊ณ์ฐํ ๋์๋ ์ฐ์ ์์๊ฐ ์๋ ๊ฒ์ฒ๋ผ, ์ฐ์ฐ์์๋ ์ฐ์ ์์๊ฐ ์๋ค. 6๊ฐ์ง๊ฐ ์์ผ๋ฉฐ, ์๊ธฐ ์ฌํญํ๊ธฐ ์ข๊ฒ ๋ฌด๋จ์ฐ๋น๋ ผ๋ ์ด๋ ๊ฒ ์๊ณ ์์ผ๋ฉด ์ข๋ค. 1. ๋ฌด () 2. ๋จ - ๋จํญ ์ฐ์ฐ์( --, ++, !) 3. ์ฐ - ์ฐ์ ์ฐ์ฐ์(*, /, %, +, -) 4. ๋น - ๋น๊ต ์ฐ์ฐ์(>, >=,
๊ธฑ๊ฒฝ์ ์๋น์ค
๊ธฑ๊ฒฝ์ ์๋น์ค์ ๊ด๋ จ๋ ๊ธฐ์ ์ ํฌ์ํ๋ ๊ฒ์ ์ด๋จ๊น? ์ต๊ทผ๋ค์ด ๊ด์ฌ์ ๊ฐ๊ณ ์ฐพ์๋ณด๊ณ ์๋ค. ๊ธฑ๊ฒฝ์ (gig economy) ‘๊ธฑ’์ ๋ฌด๋ ๊ณต์ฐ์ ๋ปํ๋ ๋ง๋ก, ๊ณต์ฐ์ ์ํด ํ์ํ ์ฐ์ฃผ์๋ค์ ๊ณต์ฐ์ฅ ๊ทผ์ฒ์์ ์์๋ก ์ญ์ธํ๋ค๋ ์๋ฏธ๋ฅผ ๋ดํฌ ๊ณต์ ๊ฒฝ์ ์์๋ ๋ ธ๋์ด ๊ธฑ์ผ๋ก ๋ณํ๋ค๋ ์๋ฏธ์์ ๊ธฑ๊ฒฝ์ ๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉ ์จ๊ณ ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ๋๋ ๊ฒ์ด, ์ด๊ฒ ๋ฏธ๊ตญ์๋ ์์๊น ์๋๋ฐ, ์ค์ ๋ก ์๋ค. ‘์ธํ(Thumbtack)’์ ๋ฏธ๊ตญ์์ ์ธ๊ธฐ ์๋ ์ ๋ฌธ๊ฐ ์๋น์ค ์ค ํ๋๋ค. interior, house fixing ๋ฑ ๊ฐ์ข ์์ ์ ๋น๋กฏํด ๋ง์ ์ฌ, ์ ์์ฌ, ์๋ฆฌ์ฌ, ๋ฐฐ๊ด๊ณต, ์๊ฐ ๋ฑ ๋ฌด๋ ค 1000๊ฐ์ ๋ฌํ๋ ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ์ ์ ๋ฌธ๊ฐ์ ์ด๋ฅผ ํ์๋ก ํ๋ ์ฌ์ฉ์๋ฅผ ์ฐ๊ฒฐํด์ค๋ค. ์ธํ๊ณผ ์ ์ฌํ ๊ตญ๋ด ์๋น์ค๋ก๋ ‘ํฌ๋ชฝ’, ‘์จ๊ณ ’, ‘์ค..
![์ ์ผ์ ์ ์ฅ๋ง ์์ ์ํ์ฃผ?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvTc0U%2FbtrJgxUoGES%2F9bsDeWrvkKG08sfmWhPSkk%2Fimg.jpg)
์ ์ผ์ ์ ์ฅ๋ง ์์ ์ํ์ฃผ?
ํญ์ผ๊ณผ ๋ฌด๋์ ์ฅ๋ง๋ก ์ธํด ๊ฐ์ฅ ํฐ ์ํ๋ฅผ ์ ์ ๊ฒ์ผ๋ก ์์๋๋ ๊ธฐ์ ์ด ์๋ค๋ฉด, ๋ฐ๋ก ์ ํ๊ธฐ์ ์ ์ต๊ธฐ, ๋๊ฐ๋ค ์ฌ์ ํฌํธํด๋ฆฌ์ค์ ํฌํจํ๊ณ ์๋ ์ ์ผ์ ์๊ฐ ์๋๊น. ์ง๊ธ์ ์ ์ ์ธ ๊ด๊ณ๋ก, ์กฐ๋ง๊ฐ ์์ฅ์์ ์ฃผ๋ชฉ์ ๋ฐ๊ณ ํฌ๊ฒ ํ๋ฐฉ์ ๋ณด์ฌ์ฃผ์ง ์์๊น ์ถ๋ค. ์ง๊ธ์ ์ฅ๋ง๋ก ์ธํด, ์ฌ๊ธฐ ์ ๊ธฐ ์นจ์๋ก ์ธํด ์ฌ์ ์ด ์์ข์ ๊ณณ์ด ๋ง๋ค๋ณด๋ ์ ์ต์ด ํ์ํ ์์์ฒ๊ฐ ๋์ด๋ ํ ๊ณ , ์ฅ๋ง๋ ๊ธธ์ด์ง๋ ๊ทธ๋งํผ ํ๋งค๋๊ณผ ์์๋ ๊ณต๊ธ๋ณด๋ค ๋์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง ์ด๋ฐ ๋ด์ฉ๋ค์ด ์ ๋ฐ์๋์ง ์์ ๊ฒ์ด ํ์ฌ ์ฃผ๊ฐ์ด๋ฏ๋ก, ๋ด์ฌ ๊ธฐ๋ํด๋ณธ๋ค. ์ฅ๋ง์ฒ ์ํ์ฃผ : ์ ์ผ์ ์
![๊ฐ๋จ ์์ต ์นจ์ ๊ตฌ๊ฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBMs9e%2FbtrJepQAVjH%2FTMacDlzMBhPGBL5GcTo5I1%2Fimg.jpg)
๊ฐ๋จ ์์ต ์นจ์ ๊ตฌ๊ฐ
๊ฐ๋จ์ญ ์ผ๋๋ ์์ต ์นจ์ ๊ตฌ๊ฐ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํนํ๋ ์ง๊ธ๊ฐ์ด ์ฅ๋ง์ฒ ๊ธฐ๊ฐ์๋ ์กฐ์ฌํด์ผํ๋ค. ๋ฌผ๋ก ํ์์ ๋น ๊ณต์ฌ๊น์ง ํ๊ณ , ํญ์ฐ์ ๋๋นํ๋ค๊ณ ํ์ง๋ง ๊ณผ๊ฑฐ์ ๊ฐ๋จ์ ์ด๋ ฅ์ ์๊ฒ๋๋ฉด ์ผ๋ง๋ ํจ๊ณผ๊ฐ ์์์ง ์๋ฌธ์ด ์๊ธด๋ค. ์๋ํ๋ฉด ๊ฐ๋จ์์๋ ๊ฐ๋จ์ญ ๊ฐ์ ๊ฒฝ์ฐ, ํญ์๋ฆฌ ์งํ์ผ๋ก ๊น๋๊ธฐ ๋ชจ์์ผ๋ก ์ํน ํ์ธ ์ ์ง๋ ๋ชจ์์ ๊ฐ๊ณ ์๋ค. ๋ณดํต ํ์๊ฐ ์ค๋ฉด ์๋ฉด ๋์ด 15.74 m ์ ๋๊น์ง ์ค๋๋ฐ, ๊ฐ๋จ์ญ ์ผ๋๋ ํด๋ฐ 12.2 m๋ก์ ๋ฎ์ ๊ด๊ณ๋ก, ์ฐ์ ๊ฐ๋จ์ ๋น๊ฐ ์ค๋ฉด ์์ด์ ๋ฐํฌ ์ง์ญ์์ ๋ฌผ์ ๋ฐํฌ์ฒ์ผ๋ก ๋นผ๊ณ ์ ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จ์ญ์ 1970๋ ๋ ๋์ ๊ฐ๋ฐ์ ํ๊ธฐ ์ ์๋ ๋๊ฒฝ ์ง์ญ์ด์๋ค. ํ์ฒ์ ๋ณต๊ฐํ ๊ณณ์ผ๋ก, ํ์ด ์ ๋ค. ๊ทธ๋์ ๋น๊ฐ ๋ด๋ฆฌ๊ฒ ๋๋ฉด ๋น๋ฌผ์ ๋ณดํต ํ์์ผ๋ก ๋ค์ด๊ฐ์ผํ๋๋ฐ, ๊ฐ๋จ์ ํ์ด ์ ์ด..
[Python] Couldn't find a tree builder with the features you requested: html/parser. Do you need to install a parser library? ์๋ฌ ์์ธ/ํด๊ฒฐ๋ฐฉ์
์์ธ์ฝ๋ import requests from bs4 import BeautifulSoup def get_exchange_rate(target1, target2): headers = { 'User-Agent' : 'Mozilla/5.0', 'Content-Type' : 'text/html; charset=utf-8' } response = requests.get("https://kr.investing.com/currencies/{}-{}".format(target1, target2), headers = headers) content = BeautifulSoup(response.content, 'html/parser') containers = content.find('span', {'data-test':'..