크롤링과 크롤러
crawling : 크롤러를 사용하여 웹페이지의 데이터를 추출해 내는 행위
crawler : 웹페이지의 데이터를 모아주는 소프트웨어
함수와 모듈
함수 : 반복되는 작업을 간결하게 해결
모듈 : 자주 쓰이는 함수들을 모아놓은 파일
Beautiful Soup
BeautifulSoup는 사실 모듈명이 아니다. 기능명이다
from bs4 import BeautifulSoup 이 형태로 활용
response = requests.get(url)
print(response.text)------1
print(BeautifulSoup(response.text, 'html.parser'))-----2
=> 1과 2의 결과가 눈으로 보기엔 같은데 서로 다른 결과이다?
- 둘 다 type을 출력해 본 결과 1은 str, 2는 bs4.BeautifulSoup bs4.BeautifulSoup이다
- 2는 BeautifulSoup라는 통에 하나의 문자열을 하나하나 떼서 넣은 형태이다
BeautifulSoup(데이터, 파싱방법)
데이터는 html or xml이 올 수 있다
파이썬 내장 parser인 html.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를 활용한 실습
- 위치, 날씨, 온도, 체감온도, 최저/최고기온, 습도, 기압, 풍향, 풍속 출력
2. googletrans 라이브러리를 활용한 번역기 프로그램 실습
- 입력 받은 문장의 언어 감지, 번역 결과 출력
3. 파이썬, gmail을 이용하여 메일 전송 실습
- SMTP
- MIME
- 메일에 사진 첨부
- 메일 주소 유효성 검사
총 3개의 실습을 더 했다.
'AI SCHOOL > TIL' 카테고리의 다른 글
[DAY 6] 코랩, 리스트와 튜플, 깊은 복사 (0) | 2023.01.05 |
---|---|
[DAY 5] Week 1 Insight Day (0) | 2023.01.05 |
[DAY 3] input, list와 dictionary, 별찍기, 로또번호 생성 (0) | 2023.01.04 |
[DAY 2] 테킷 비디팅 방식, 파이썬 기초 (0) | 2023.01.04 |
[DAY 1] OT (0) | 2023.01.03 |
댓글