본문 바로가기
AI SCHOOL/TIL

[DAY 4] 크롤링, BeautifulSoup, API 활용

2023. 1. 4.

크롤링과 크롤러
crawling : 크롤러를 사용하여 웹페이지의 데이터를 추출해 내는 행위
crawler : 웹페이지의 데이터를 모아주는 소프트웨어

함수와 모듈
함수 : 반복되는 작업을 간결하게 해결
모듈 : 자주 쓰이는 함수들을 모아놓은 파일

Beautiful Soup
BeautifulSoup는 사실 모듈명이 아니다. 기능명이다
from bs4 import BeautifulSoup 이 형태로 활용

response = requests.get(url)
print(response.text)------1
print(BeautifulSoup(response.text, 'html.parser'))-----2
=> 12의 결과가 눈으로 보기엔 같은데 서로 다른 결과이다?
  - 둘 다 type을 출력해 본 결과 1str, 2는 bs4.BeautifulSoup bs4.BeautifulSoup이다
  - 2는 BeautifulSoup라는 통에 하나의 문자열을 하나하나 떼서 넣은 형태이다

BeautifulSoup(데이터, 파싱방법)
데이터는 html or xml이 올 수 있다
파이썬 내장 parserhtml.parser 사용
html.parser가 데이터를 의미 있는 데이터로 변환
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title) - 결과 : <title>Daum</title>
print(soup.title) - 결과 : <title>Daum</title>
print(soup.title.string) - 결과 : Daum - 실제 타이틀만 출력
print(soup.span) - html 문서의 최상단 span 태그 내용 출력
print(soup.findAll(‘span’)) - 모든 span 태그 내용 출력

의미 있는 데이터들 중에서도 필요한 데이터인 실시간 검색어만 가져오기
file = open("daum.html", "w")
file.write(response.text) - html 파일을 하나 만들어서 내용을 write하고 눈으로 확인
file.close()
실시간 검색어 데이터는 a태그라는 공통점과 클래스가 link_favorsch라는 공통점 파악
print(soup.findAll(‘a’))  # html 문서에서 모든 a 태그를 가져오는 코드
print(soup.findAll(‘a’, ‘link_favorsch’))  # a태그 중 link_favorsch 클래스로 한정
- 실시간 검색어의 목록이 나오지만 보기 좋게 다듬는 과정 필요해 보임

예쁘게 출력하기
results = print(soup.findAll(‘a’, ‘link_favorsch’))
for result in results:
    print(result.get_text(), ‘\n’)  # 태그 정보는 모두 빠져서 출력

from datetime import datetime
print(datetime.today().strftime("%Y년 %m월 %d일 실시간 검색어
.\n"))

Beautiful Soup를 이용한 Daum 실시간 검색어 1~10위를 출력하는 실습이 VOD 강의였는데
강의를 촬영한 시점은 2020년이고 현재는 실시간 검색어가 없어졌기 때문에 제대로 실습하지 못했다.


 
 팀원분의 아이디어로 네이버 게임 순위 페이지로 대신하여 크롤링 실습을 하였다.
 

실시간 검색어는 아니지만 크롤링 실습을 할 수 있었다.


DAY 2, DAY 3에 비해 갑자기 어려워져서 놀랐다. 그래도 처음해보는 것들이라 재미있었다.


이후
1. 날씨 데이터 API를 활용한 실습
- 위치, 날씨, 온도, 체감온도, 최저/최고기온, 습도, 기압, 풍향, 풍속 출력

 

[OpenWeatherMap] 날씨 API 사용해보기

Python으로 날씨 API를 사용하여 기온, 습도, 기압, 풍향, 풍속 등 날씨 정보를 가져오는 방법에 대해 알아보자. 1. API Key 발급 https://home.openweathermap.org/ Members Enter your email address and we will send you a link

icedhotchoco.tistory.com


2. googletrans 라이브러리를 활용한 번역기 프로그램 실습
- 입력 받은 문장의 언어 감지, 번역 결과 출력

 

[Python 구글 번역기] googletrans 사용해보기

googletrans : 언어 감지 및 번역 기능을 가진 구글의 Open API 1. 라이브러리 로드, Translator 객체 생성 from googletrans import Translator translator = Translator() 2. 언어 감지하기 sentence = '안녕하세요 저는 한국인

icedhotchoco.tistory.com


3. 파이썬, gmail을 이용하여 메일 전송 실습
- SMTP
- MIME
- 메일에 사진 첨부
- 메일 주소 유효성 검사

 

[Python 이메일 발송] 파일 첨부하여 Gmail 보내기 (SMTP)

파이썬 smtplib 라이브러리와 Gmail 계정을 이용하여 파일을 첨부한 메일을 전송해보자. 사전 준비 파이썬 코드를 통해 Gmail을 보내기 위해선 "IMAP 사용" 설정이 필요하다. 설정 방법 1. 설정 진입 :

icedhotchoco.tistory.com

총 3개의 실습을 더 했다.

반응형

댓글