파파비의 블로그
[python/파이썬] 크롤링 기초 (BeautifulSoup & Requests 라이브러리) 본문
크롤링?
> 웹 페이지에서 필요한 정보를 추출해내는 작업
- 웹 페이지? > 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 파트를 찾아낼 수도 있음
'개발 > python' 카테고리의 다른 글
[python/파이썬] API를 활용한 크롤링 (0) | 2021.06.15 |
---|---|
[python/파이썬] 여러 페이지를 한번에 크롤링하기 (0) | 2021.06.13 |
[python/파이썬] 함수 코딩시 Tips (0) | 2021.06.11 |
[파이썬, Python] 임의 정밀도, int (0) | 2021.05.17 |
[파이썬, Python] enumerate 함수 (0) | 2021.05.17 |