파파비의 블로그

[python/파이썬] 크롤링 기초 (BeautifulSoup & Requests 라이브러리) 본문

개발/python

[python/파이썬] 크롤링 기초 (BeautifulSoup & Requests 라이브러리)

N. Dave 2021. 6. 13. 10:05
반응형

크롤링? 

> 웹 페이지에서 필요한 정보를 추출해내는 작업

 - 웹 페이지? > HTML 문서임

 - HTML을 가져오기 위해 Request lib 사용

 - 가져온 HTML 분석을 위해 BeautifulSoup lib를 사용

 

> 크롤링을 하는 프로그램을 '크롤러'라고 부름

 

BeautifulSoup 라이브러리

- HTML, XML, JSON 등 파일의 구문을 분석하는 모듈

- 특히 크롤링에서는 가져온 HTML 파일을 분석하기 위해 쓰임

 

 

1) 파일 열기

soup = BeautifulSoup(open("index.html"), "html.parse")

- 관례적으로 soup라는 객체를 사용함

- index.html 파일을 열고, 그것을 html로 분석하라는 의미

- "html.parser"를 굳이 명시 안하면 자동으로 "html.parser"로 설정됨

- open함수, "html.parser" 모두 파이썬 내장임

 

 

2) 특정 부분 추출하기

soup.find("p")     #처음 p태그 찾기
soup.find_all("p") #모든 p태그 찾기

#출력예시
#find <p>...</p> 하나의 beautifulsoup 객체
#find_all [<p></p>, <p></p>, <p></p>] beautifulsoup 객체 리스트

find 태그를 통해 필요한 태그를 찾을 수 있음

 

soup.find("div")
soup.find("div", class_= "some_class")

class_ 매개변수를 활용하면, 특정 class를 가진 태그를 추출할 수 있음

++ 특정 id를 원한다면 매개변수로 id="~~"  이렇게 설정해주면 됨.

 

soup.find("div", class_="some_class").find("p")

# find의 결과 역시 BeautifulSoup 이라서 다시 find 사용 가능

이렇게 하면 Div 안에 p태그를 찾아낼 수 있음

 

#get_text() - 태그 안에 있는 text를 추출한다

soup.find("div")
soup.find("div").get_text()

#출력예시
<p>hi beuatifulsoup!</p>
hi beuatifulsoup!

 

Requests 라이브러리

Python에서 http 요청을 보낼 수 있는 모듈

 

http request, 요청이란?

Get/Post/Delete 등...

정보를 가져오거나, 수정을 요청하거나 등의 서버쪽에 보내는 요청을 의미함

보통 크롤링에선 get을 써서 서버에 정보를 달라고 요청하여 정보를 가져옴

 

url = "https://www.google.com"
result = requests.get(url)

지정한 url을 get메소드에 넣어서 보내고

서버가 우리의 요청을 확인/처리 한 뒤 data를 보내게 되는데,

그 return 값을 result에 저장하면 됨

 

print(result.status_code)
print(result.text)

응답이 제대로 이루어졌는지는 status_code를 통해 확인 가능하며

결과 값은 text 속성을 통해 접근 가능함

(html 부분이 text인 것임)

 

>> Requests 라이브러리와 BeautifulSoup 라이브러리를 동시에 활용하면 웹페이지 분석이 가능해지는 것!

 

 

 

 

 

Tip1) "개발자 도구", F12 를 누르면 웹페이지의 html 코드를 살펴볼 수 있음 > 원하는 정보가 든 태그를 찾을 수 있음

Tip2) 웹페이지 내 원하는 부분을 우클릭 -> "검사"를 통해 원하는 html 파트를 찾아낼 수도 있음

 

 

반응형
Comments