본문 바로가기
코딩

웹에서 정보 뽑아먹기 - 웹 크롤러 만드는 법-

by 김유로01 2022. 5. 4.
728x90
반응형

터미널 창에

pip install requests

pip install bs4

하나씩 입력한다

 

 

그 후에 

 

import requests
from bs4 import BeautifulSoup

이렇게 코드를 입력해 놓으면 웹 크롤러 제작 기반 마련 성공이다.

 

 

굳이 설명하자면 import requests는 웹 사이트 접속 도와주는 라이브러리 개념이고

from bs4 import BeautifulSoup는 html 웹문서 분석 도와주는 라이브러리 개념이다

 

 

데이터 = requests.get('url')

 

 

데이터를 가져오고자 하는 url을 준비하고 저기에 입력한다.

url의 정보를 데이터 안에 저장하는 것.

 

 

print(데이터.status_code)

 

 

먼저 웹 페이지 접속이 원활하게 되고 있는지 확인하기 위해 위 코드를 입력하고 출력해본다.

200이 뜬다면 정상 접속이고 400, 500이 뜬다면 뭔가 문제가 있는 것이다.

 

 

이후 데이터를 가져올 사이트에 접속한다. 여기서 중요한 점은 크롬으로 접속해야 한다는 것이다.

 

빨간 동그라미 버튼을 클릭 후 원하는 정보에 커서를 올리면 왼쪽에서 해당하는 html 값이 찾아지는 것을 확인할 수 있다.

 

 

soup = BeautifulSoup(데이터.content, 'html.parser')
print(soup.find_all('태그명', id=""))

 

soup = BeautifulSoup(데이터.content, 'html.parser')
print(soup)
 
까지만 하면 모든 html 정보값이 쫙 나와버린다. 따라서 원하는 정보만 뽑아 쓸 것이기 때문에 find_all('태그명', id="")을 입력해 같이 출력한다.

 

 

위의 표대로 출력하면 리스트가 출력된다. 리스트를 지우고 원하는 값만 뽑으려고 한다.
 

 

데이터 = requests.get('https://breakmatrix.tistory.com/')
soup = BeautifulSoup(데이터.content, 'html.parser')
print(soup.find_all('태그명', id="")[0].text)

 

 

[] 안에 원하는 값이 담긴 자리값을 입력한다. 예시를 0을 넣은 것임/

그렇게 되면 리스트가 지워지게 된다.

하지만 그렇게 해도 html 태그들이 지저분하게 남게 된다. 따라서 .text 를 같이 입력하고 출력한다.

 

만약 원하는 데이터 앞에 id가 없고 class만 있다면

데이터 = requests.get('https://breakmatrix.tistory.com/')
soup = BeautifulSoup(데이터.content, 'html.parser')
print(soup.find_all('태그명', class_="")[0].text)

 

 

id 말고 클래스로 바꾸기만 하면 된다.

하지만 여기서 주의해야 할 점은 class 뒤에 꼭 언더바를 해야한다는 점!!

그리고 보통 class 는 홈페이지 안에 무수히 많으므로 출력을 할 경우 엄청나게 많은 정보값이 나올 것이다.

거기서 원하는 데이터를 찾고 대괄호 안에 숫자를 수정하면 된다.

 

 

또한 만약 찾으려는 class 명이 "brk title" 이렇게 되어있을 수 있다. 이것은 "brk", "title" 이라는 두 개의 클래스이다. 따라서 그대로 클래스를 입력하는 것이 아니라, 앞의 "brk"라는 클래스만 입력한다.

 

 

 

결국 id로 찾는 것이 제일 간편하다고 할 수 있다.

 

 

728x90
반응형

댓글