도구들/R,파이썬

[파이썬] 웹사이트 주소 수집하기(url 크롤링) 1. html에서 url 찾아서 파이썬으로 가져오기

cactus 2022. 3. 26. 18:43

requests 로 사이트에 요청을 보내고

Beautifulsoup으로 html을 다루는 방법까지 소개했다.

https://ryuhyun.tistory.com/63

 

[파이썬] 웹 크롤링 시작하기 2. BeautifulSoup로 html 다루기

파이썬 requests 모듈로 웹사이트에 요청을 보내는 방법에 대해 정리한 것에 이어서 웹사이트 내의 정보들을 수집하기 위해서 해당 사이트의 html을 다루는 툴로 BeautifulSoup 모듈을 소개한다. https://

ryuhyun.tistory.com

 

코로나 확진자 정보 수집을 위해

질병관리청 보도자료 게시글 링크(url)들을 수집하려고 한다.

질병관리청에서는 매일 보도자료를 통해 코로나19 발생과 예방접종 등 관련 현황들에 대해 정보를 공개하고 있다.

 

https://www.kdca.go.kr/board/board.es?mid=a20501020000&bid=0015&&cg_code=C01 

 

질병관리청

질병관리청

www.kdca.go.kr

 

이 페이지에 연결된 게시글의 링크 주소 또한 페이지 소스에 포함되어 있다.

크롬 브라우저에서 F12 키를 누르면 페이지 소스를 바로 확인할 수 있다.

또는 우측 상단의 점 세개(맞춤설정 및 제어) 아이콘을 누르고 '도구 더보기' - '개발자' 메뉴를 눌러도 된다.

 

이제 수집하고자 하는 url 주소가 포함된 태그를 찾아야 한다.

우측의 소스 창에서 태그를 하나씩 눌러 가며 링크 주소가 선택되는 태그를 찾는다. 

 

게시글 링크가 a href 태그 아래 삽입되어 있다.

 

이 페이지의 경우 <div class="dbody"> 태그 이하에

<a href="게시글링크주소"> 형태로 구성되어 있는 것을 확인했다.

 

이제 보도자료 페이지의 html 소스를 파이썬으로 가져와서 원하는 주소만 추출해낼 것이다.

request로 요청 보내고 보도자료 페이지 url 가져오는 것까지 빠르게 진행한다.

import requests
from bs4 import BeautifulSoup

#질병관리청 url 주소 url이라는 변수에 저장
url="https://www.kdca.go.kr/board/board.es?mid=a20501020000&bid=0015&&cg_code=C01"

#응답받은 html을 req 이라는 변수에 저장
req=requests.get(url)

#req에 저장한 html을 파싱해서 soup 이라는 변수에 저장
soup=BeautifulSoup(req.content, 'html.parser')

 

soup 변수에 파싱해서 저장한 html 내에서 본문 내용을 찾는다.

.find 명령어를 통해 태그를 찾을 수 있다. 

 

.find('태그명') 이라고 입력할 경우 가장 첫 태그만 검색되며,

.find_all('태그명') 이라고 입력할 경우 해당 이름의 모든 태그가 검색된다.

.find 에서 태그명과 함께 태그의 상세 이름도 검색이 가능하다.

내가 원하는 정보는 div 태그의 class_="dbody" 라는 태그에 있었으므로, 아래와 같이 검색해본다.

soup.find('div',class_="dbody")

class_="dbody" 인 div 태그들만 검색된다.

검색된 태그들 사이에서 내가 원하는 주소 url들이 입력되있는 태그인 'a' 태그들만 검색해보자.

아래와 같이 입력 가능하다.

soup.find('div',class_="dbody").find_all('a')

a href 태그 이하의 주소 url 들이 검색되는 것을 확인할 수 있다.

 

이와 같이 html 안에서 원하는 내용을 찾아서 검색 가능하다.

반응형