HTML ๋ถ์
HTML๋ถ์์ ๋ํด ๋ ผํ๊ธฐ ์ ์, ์ง๊ณ ๋์ด๊ฐ ์ฒ ํ์ด ์๋ค.
๊ฐ๋ฐ์์ ๋ถ์๋ ฅ์ ๊ณผ์ํ๊ธฐ ์ ์, ์ด ํ์ด์ง์ HTML์ ๋ถ์ํ๋ ๊ฒ์ด ์ต์ ์ธ์ง ๊ณ ๋ฏผํ๋ผ.
๋ ๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ๋ชจ๋ฐ์ผ ๋ฒ์ ์ฌ์ดํธ๊ฐ ์์ ์๋ ์๊ณ ,
์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์จ๊ฒจ์ง ์ ๋ณด๊ฐ ๋ ์ ์ฉํ ์๋ ์๋ค.
ํ์ด์ง URL์ ์ ์ฉํ ์ ๋ณด๊ฐ ์จ๊ฒจ์ ์์๋๋ ์๊ณ
์์ ๋ค๋ฅธ ์น ์ฌ์ดํธ๋ฅผ ๋ถ์ํ๋ ๊ฒ์ด ํ๋ช ํ ๋ฐฉ๋ฒ์ผ ์๋ ์๋ค.
BeautifulSoup๋ฅผ ํ์ฉํ๋ฉด ํ๊ทธ์ ์์ฑ๊ฐ๋ค๋ก HTML์ ๋ถ์ํ ์ ์๋ค.
์ด๋ ํต์ฌ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ด find์ findAll ํจ์์ด๋ค.
find() , findAll() ํจ์
BeautifulSoup์์ ๊ฐ์ฅ ์์ฃผ ์ฐ๋ ํจ์์ด๋ค.
ํ์ด์ง์์ ์ํ๋ ํ๊ทธ๋ฅผ ํํฐ๋งํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
find์ findAll ํจ์์์ ์ ๋ฌํ ์ธ์๋ค์ ๋ค์ ํ์ ๊ฐ๋ค.(๋๋ถ๋ถ๊ฒฝ์ฐ tag์ attributes๋ง ์ธ ๊ฒ์ด๋ค)
์ข ๋ฅ | ์ค๋ช |
tag | ํ๊ทธ ์ด๋ฆ์ธ ๋ฌธ์์ด์ ๋๊ธฐ๊ฑฐ๋, ํ๊ทธ ์ด๋ฆ์ผ๋ก ์ด๋ฃจ์ด์ง ํ์ด์ฌ ๋ฆฌ์คํธ๋ฅผ ๋๊ธด๋ค. ex) bs.findAll('h1') , findAll(['h1','h2']) |
attributes | ์์ฑ์ผ๋ก ์ด๋ฃจ์ด์ง ํ์ด์ฌ ๋์
๋๋ฆฌ๋ฅผ ๋ฐ๊ณ , ๊ทธ์ค ํ๋์ ์ผ์นํ๋ ํ๊ทธ๋ฅผ ์ฐพ๋๋ค. ex) bs.findAll('span', { 'class' : ['green', 'red']}) |
recursive | ๋ฌธ์์์ ์ผ๋ง๋ ๊น์ด ์ฐพ์ ๋ค์ด๊ฐ๊ณ ์ถ์์ง ์ง์ ํ๋ ๋ถ๋ฆฌ์ธ์ด๋ค. True๋ฉด ๋งค๊ฐ๋ณ์์ ์ผ์นํ๋ ํ๊ทธ๋ฅผ ์ฐพ์ ์์, ์์์ ์์์ ๊ฒ์ํ๋ค. False๋ฉด ๋ฌธ์์ ์ต์์ ํ๊ทธ๋ง ์ฐพ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ True์ด๊ณ , ์ ๊ฑด๋ค์ด์ง ์๋๋ค. |
text | ํ
์คํธ ์ฝํ
์ธ ๋ก ํํฐ๋งํ๋ ์ธ์์ด๋ค. ํ๊ทธ์ ๋๋ฌ์ธ์ธ ํน์ ํ
์คํธ๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํ๋ค. ex)bs.findAll(text='the prince') |
limit | findAll์์๋ง ์ฐ๋ ์ธ์๋ก, ๊ฒฐ๊ณผ๋ฅผ ๋ช ๊ฐ ์ฐพ์๋ ๊น์ง ํํฐ๋ง์ ๊ณ์ํ ์ง ๊ฒฐ์ ํฉ๋๋ค. ์ฆ, findํจ์๋ findAllํจ์์ limit์ 1๋ก ์ค์ ํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. |
keyword | ํน์ ์์ฑ์ด ํฌํจ๋ ํ๊ทธ๋ฅผ ์ ํํ ๋ ์ฌ์ฉํฉ๋๋ค. attrubutes๋ or ํํฐ์ฒ๋ผ ๋์ํ์ง๋ง keyword ๋งค๊ฐ๋ณ์๋ andํํฐ์ฒ๋ผ ๋์ํฉ๋๋ค. class๋ ํ์ด์ฌ ์์ฝ์ด์ด๋ฏ๋ก class_ ๋ผ๊ณ ์ ์ด์ฃผ์ด์ผ ํจ์ ์ ์ํด์ผํฉ๋๋ค. ex) bs.findAll(id='title', class_='text') |
ํธ๋ฆฌ ์ด๋
findAll ํจ์๋ ์ด๋ฆ๊ณผ ์์ฑ์ผ๋ก ํ๊ทธ๋ฅผ ์ฐพ๋๋ค.
ํ์ง๋ง ์ด๊ฒ ๋ง์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์์ ์ ๊ทผํ๋ ๊ฒ์ ์ฝ์ง ์์ ์ ์๋ค.
html ํธ๋ฆฌ ๊ตฌ์กฐ ๋ด์์ ํน์ ์์์์, ํ์ ์์, ๋ถ๋ชจ์์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
์์/์์ ๋ค๋ฃจ๊ธฐ
์ ๊ธ์ ์์ ์์ ๋ณด์๋ฏ, ์จ์ ์ ์ฐ๊ณ ํ๊ทธ๋ฅผ ์ ์ด์ฃผ๋ฉด ์์์ ์ ํํ ์ ์๋ค.
์๋ฅผ ๋ค์ด bs.body.h1์ body์ ์์์ธ ์ฒซ ๋ฒ์งธ h1 ํ๊ทธ๋ฅผ ์ ํํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก bs.div.findAll("img")๋ ๋ฌธ์์ ์ฒซ ๋ฒ์งธ div ํ๊ทธ๋ฅผ ์ฐพ๊ณ , ๊ทธ div ํ๊ทธ์ ์์์ธ ๋ชจ๋ img ํ๊ทธ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์จ๋ค.
๋ง์ฝ ์ด๋ค ํ๊ทธ์ ์์๋ง์ ๋ค๋ฃจ๊ณ ์ถ๋ค๋ฉด .children ์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
์๋ฅผ ๋ค์ด bs.table.children์ ์ฒซ ํ ์ด๋ธ ํ๊ทธ์ ์์๋ค์ list_iterator๋ก ๋ฐํํ๋ค.
ํ์ ๋ค๋ฃจ๊ธฐ
.next_sibling ๋๋ .next_siblings๋ฅผ ํตํด ๋ค์ ํ์ ๋๋ ๋ค์ ํ์ ๋ค์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
next_sibling์ ํ๊ทธ ๊ฐ์ฒด๋ฅผ, next_siblings๋ generator๋ฅผ ๋ฐํํฉ๋๋ค.
๋น์ฐํ ํ๊ทธ ๊ฐ์ฒด ์์ ์ ์์ ์ ํ์ ๊ฐ ์๋๋ฏ๋ก, ์์ ๋ค์์ ๊ฐ์ฒด ๋๋ ๊ฐ์ฒด๋ค์ด ์ ํ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด table ํ๊ทธ์์ ์ ๋ชฉ ์ด์ ์ ์ธํ ๋๋จธ์ง ์ด๋ค์ ์ ๊ทผํ ๋ ํ์ฉํ ์ ์์ต๋๋ค.
๋น์ทํ ๋งฅ๋ฝ์์, .previous_sibling ๋๋ .previous_siblings ๋ํ ํ์ ๊ด๊ณ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ถ๋ชจ ๋ค๋ฃจ๊ธฐ
์์ฃผ ๊ฐ๋, ๋ถ๋ชจ๋ฅผ ์ฐพ์์ผ ํ ๋๋ ์์ต๋๋ค.
.parent์ .parents๋ฅผ ํตํด ๋ถ๋ชจ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
parent๋ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ parents๋ ๋ถ๋ชจ, ๋ถ๋ชจ์ ๋ถ๋ชจ, ๋ถ๋ชจ์ ๋ถ๋ชจ์ ๋ถ๋ชจ, ... ๋ก ๊ตฌ์ฑ๋ generator๋ฅผ ๋ฐํํฉ๋๋ค.