-
ํฌ๋กค๋ง์ด๋? ๊ทธ๋ฆฌ๊ณ requestsWEB/Crawling 2023. 10. 10. 22:58
ํฌ๋กค๋ง
๐ก ์น ์ฌ์ดํธ์ ๋ด์ฉ์ ์ ๊ทผํ์ฌ ์ํ๋ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ํ์
ํฌ๋กค๋ง์ ํ๊ธฐ ์ํด์๋?
HTML CSS Python
์ธ์ ์ฐ์ด๋ ๊ฑธ๊น?
- ์ ๋ฌด ์๋ํ
- ๋ถ์์ ์ฐฝ์ถ
ํ์ฉ์์
๋ก์ฐ์ฐจํธ - ๋ก์ฐ์ฐจํธ - ์ฟ ํก ๊ฐ๊ฒฉ ๋ณ๋ ์ถ์
์ฟ ํก ๊ฐ๊ฒฉ ์ธ์ง๋ฉด ์๋ ค์ฃผ๊ธธ ์ํด์? - ๋ก์ฐ์ฐจํธ
www.lowchart.com
๋กค ์ ์ ๊ฒ์์ OP.GG - ๊ฒ์ ์ ์ , ์ฑํผ์ธ ๊ณต๋ต, ์นด์ดํฐ ์ ๋ณด, ๋ญํน ๋ฑ
๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋ ์ ์ ๊ฒ์์ OP.GG! LCK ๊ณต์ ์คํฐ์ OP.GG์์ ๋กค ์ ์ ๊ฒ์๊ณผ ์ฑํผ์ธ ๊ณต๋ต์ ํ์ธํด๋ณด์ธ์. ์ํ์ฌ์ ํ๊ณก, ์นผ๋ฐ๋ ๋๋ฝ, ์ฐ๋ฅดํ, ์๋ ๋ ๋ฑ ๋ค์ํ ๋ชจ๋์ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ
www.op.gg
์ฝ๋ก๋๋งต
์ฝ๋ก๋๋งต ์ฝ๋ก๋๋ฐ์ด๋ฌ์ค์ ๊ตญ๋ด ํํฉ์ ์๋ ค์ฃผ๋ ์ง๋ ์๋น์ค์ ๋๋ค. ์ด์ฉ๊ฒฝ๋ก๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
coronamap.site
Requests ํ์ฉ๋ฒ
requests = ํฌ๋กค๋ง ๋๊ตฌ1
Import
import requests as req
ํน์ ํ์ด์ง ์ ๋ณด๋ฅผ ์์ฒญํ๋ ํจ์
res = req.get("<https://www.naver.com/>")
<Response [200]> ← ์๋ต์ฝ๋ [200] ์ฑ๊ณต
response[์๋ต์ฝ๋]
200 = ํต์ ์ฑ๊ณต
40? = ์์ฒญ์ ๋ฌธ์
50? = ์๋ฒ์ ๋ฌธ์ ← ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ์ฌ์ดํธ
text ๋ฐ์์ค๋๋ฒ
res.text
์ฐํ๋ฐฉ๋ฒ
์ฌ์ดํธ๊ฐ ํฌ๋กค๋ง์ ๋ง์๋๋ค๋ฉด?
req.get("<https://www.melon.com/>")
๋ฌธ์
์๋ต์ฝ๋๊ฐ 406์ด ๋์จ ์ด์ = ๋ฉ๋ก ์๋ฒ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ ๊ฐ์ง
ํด๊ฒฐ์ฑ
๋ธ๋ผ์ฐ์ ์ธ๊ฒ์ฒ๋ผ ์์ด์.
๋ฐฉ๋ฒ
1. ๊ฐ๋ฐ์๋๊ตฌ ์ด๊ธฐ
2. Network
3. ํด๋น main url
4. Headers
5. ๋งจ ๋ฐ์ User-Agent ํ์ธ ํ ๋ณต์ฌ
6. ๋์ ๋๋ฆฌ ํํ๋ก ๋ณ๊ฒฝ
head = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'}
7. headers ์์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ head ๋ณ์๋ฅผ ๋ฃ์ด์ค๋ค.
req.get("<https://www.melon.com/>", headers = head)
์ฃผ์์ฌํญ
headers ๊ทธ๋๋ก ์จ์ค์ผํ๋ค.
๋ง์ฝ์ ์ด ์์ ๊น์ง ํ๋๋ฐ ์ ๋๋ค๋ฉด ์ ๋ง๋ก ์ ๋๋๊ฒ.
BeautifulSoup
1. html์ด ์๋ text๋ก ์ถ๋ ฅ์ ํด์ค์ HTML๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Text -> HTML)
2. req๋ก ๋๊ฒจ๋ฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ html ํํ๋ก ๋ณํ
์ฌ์ฉ๋ฒ
1. ์ค์น
pip install beautifulsoup4
2. from import
from bs4 import BeautifulSoup as bs
3. (”๋๊ฒจ๋ฐ์ ํ ์คํธ”, “ํ์ฑ๋ฐฉ๋ฒ”) ๐ง ์๊ธฐ
bs(res.text, "lxml")
โญ ํต์ฌ์ ๋ฐ๋์ req๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๋ bs ๋ณํ์ด ํ์ํ๋ค.
4. soup๋ก ํน์ contents ๊ฐ์ ธ์ค๊ธฐ
soup = bs(res.text, "lxml")
title = soup.select("#_topItems1 > tr > th > a")
title[1].text
5. ๋ฐฐ์ด์ ๋ฃ์ด๋๊ธฐ
title_list = [] for i in title: title_list.append(i.text) print(i.text)
'WEB > Crawling' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Selenium ๊ฐ๋จ ์ฌ์ฉ๋ฒ (0) 2023.10.11 ํฌ๋กค๋ง ์ค์ต (๋ฉ๋ก ์ฐจํธ ์์ง & ํ์จ๋ฐ์ดํฐ ์์ง) (0) 2023.10.11