일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- find_all()
- AI
- IOPub
- ML
- SMTP
- Trouble shooting
- 트러블슈팅
- category_encoders
- Roc curve
- 머신러닝
- semi-project
- 이것이 코딩 테스트다
- Django
- 잡담
- selenium
- EarlyStopping
- 크롤링
- pos_tag
- pandas
- stopwords
- Logistic linear
- 인공지능
- PYTHON
- 파일입출력
- 원소주
- beautifulsoup
- auc
- json
- 그리디
- aof
- Today
- Total
Linux, ML/DL, DevOps, 클라우드
[CODELION 강의] [심화] 같이 푸는 PYTHON - 크롤링 본문
[심화] 같이 푸는 PYTHON 강의를 마지막으로 실시간 강의를 시작하기전에 듣는 CODELION강의를 다 들었습니다.
이번 강의에서는 다음과 같은 것들을 진행했습니다!!
- BeautifulSoup를 이용한 Crawling
- API로 날씨 정보를 가져와서 오늘의 날씨 프로그램
- googletrans라이브러리를 활용한 번역기 프로그램
- SMTP를 활용한 메일 보내기 프로그램
우선 크롤링 프로그래밍에 대해 정리해 보겠습니다.
목차>
목차
01_01. Crawler, Crawling
Web Crawler : 웹 페이지의 데이터를 모아주는 소프트웨어
Web Crawling : 크롤러를 사용해 웹 페이지의 데이터를 추출해 내는 행위
01_02 requests
requests모듈은 웹사이트에 HTTP요청을 보내고 그에 대한 응답값을 받기 위해 사용합니다.
즉 서버와 통신하기 위한 Python의 모듈입니다.
requests모듈을 import 해줍니다.
다음과 같이 get()
함수에 요청을 보내기 위한 사이트의 주소를 매개변수로 전달 하면 그에 대한 응답을 변수response
에 저장하겠습니다.
import requests
url = "http://www.naver.com"
response = requests.get(url)
print(response)
출력해보면 다음과 같이 뜨고, 연결이 잘 되었다는 의미입니다.
print(response.text)
를 따로 해보시면 요청한 사이트의 전체 html코드를 문자열 자료형으로 가져오게 됩니다.
01_03 BeautifulSoup
BeautifulSoup는 requests를 통해 얻어온 html데이터를 스프객체로 변환하여 원하는 데이터를 손쉽게 추출할 수 있도록 도와주는 파이썬 라이브러리입니다.
import requests
from bs4 import BeautifulSoup
url = "http://www.naver.com"
response = requests.get(url)
print(type(response.text))
print(type(BeautifulSoup(response.text, 'html.parser')))
BeautifulSoup(response.text, 'html.parser')
의 타입을 보면 str이 아닌 스프객체로 변환된걸 볼 수 있습니다.
'html.parser'
매겨변수를 좀 더 살펴보면 다음과 같습니다.
- Parsing : 문서,데이터를 의미있게 변경하는 작업. 문자열을 의미있는 값으로 분해하고 이런것들로 이루어진 데이터로 변경하는것.
- Parser : 파싱을 도와주는 프로그램
- html.parser : HTML 데이터를 받아서 시작 태그, 종료 태그, 텍스트, 주석 및 기타 마크업 요소를 만날 때마다 처리기 메서드를 호출합니다.
다음으로 soup
라는 변수에 스프객체를 담아서 원하는 데이터를 출력 해보겠습니다.
import requests
from bs4 import BeautifulSoup
url = "http://www.naver.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title) # soup의 title태그만 가져온다
print(soup.title.string) # title태그안의 문자를 가저온다
print(soup.span) # 가장 앞에있는 span태그만 가져온다
print(soup.findAll('span')) # 모든 span태그를 가져온다
01_04 파일 만들기
위에서 데이터를 얻어왔다면 이제 데이터를 파일을 만들어서 저장하는 법에 대해 알아보겠습니다.open(파일이름, 파일모드)
함수를 통해서 파일을 생성하고 모드에 따라 읽기,쓰기,추가가 가능합니다.
file = open("naver.html","w") # 쓰기모드로 파일을 엽니다.
file.write(response.text) # write() : 파일에 매개변수의 내용을 씁니다.
file.close() # 파일을 다 사용했다면 반드시 닫아줘야 합니다.
파일열기모드 설명
- r 읽기모드 - 파일을 읽기만 할 때 사용
- w 쓰기모드 - 파일에 내용을 쓸 때 사용
- a 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용
01_05 datetime
from datetime import datetime
를 추가합니다.
저는 네이버의 미세먼지에 대한 정보를 간단하게 가져와서 표시해봤습니다.
import requests
from bs4 import BeautifulSoup
from datetime import datetime
url = "http://www.naver.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.findAll('li','air_item')
print(datetime.today().strftime("%Y년 %m월 %d일의 미세먼지")) # 날짜 출력
for result in results:
search_dust_file.write(result.get_text()+"\n") # 파일로 출력
print(result.get_text(),"\n")
'Programming Language > Python' 카테고리의 다른 글
[Toy_Project] Python 웹크롤링 - EPL순위 가져오기 (0) | 2022.03.21 |
---|---|
[CODELION 강의] [심화] 같이 푸는 PYTHON - 번역기, 메일 보내기 (0) | 2022.03.18 |
[CODELION 강의] [심화] 같이 푸는 PYTHON - 오늘의 날씨 (0) | 2022.03.18 |
[CODELION 강의] 일단 만드는 PYTHON (0) | 2022.03.15 |
[CODELION 강의] [기본] 같이 푸는 PYTHON (0) | 2022.03.15 |