250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코랩
- 빅데이터
- 파이썬
- 로지스틱회귀분석
- 비전공자
- 국비지원교육
- 컨설팅
- 웹스크래핑
- 부트캠프
- AI부트캠프
- 데이터시각화
- 다중회귀분석
- 캐글
- 코드스테이츠
- 기계학습
- RA
- 맥킨지
- 인공지능
- BCG
- 웜업
- K-Digital Training
- 컴퓨터공학
- Ai
- 컨설팅펌
- 디지털트레이닝
- t-test
- 데이터사이언스
- 주성분분석
- 선형대수학
- PCA
Archives
- Today
- Total
94년생 스피노자
[코드 블록] 웹 스크래핑/ 크롤링 본문
728x90
웹 스크래핑은 생각보다 유용하다.
인터넷에 떠도는 정보들을 정리할 수 있기 때문이다.
웹 스크래핑을 여러번 하면서 익숙해졌다고 생각했다.
그런데 다시 하려면 처음부터 블록을 쌓는 기분이다.
그래서 웹 스크래핑에 필요한 코드들을 간단하게 정리하였다.
나중에 프로그래밍을 할 때 복붙을 할 수 있게 만드는 것이 목표다.
* 코드 블록
############################################################
# 작성 날짜 : 2021년 5월 8일
# 작성자 : 94spinoza
############################################################
# 목차 :
- 1. URL 페이지 소스 가져오기
- 2. HTML 파일 읽어오기
- 3. 페이지 소스를 Tag로 접근하기
- 3-1. 최초 Tag 1개 접근하기
- soup.Tag
- soup.find('Tag')
- soup.find(attrs = {'Tag' : 'attribute'})
- soup.find('Tag1', attrs = {'Tag2' : 'attribute'})
- 3-2. 관련 Tag 모두 접근하기
- soup.find_all('Tag')
- soup.find_all(attrs = {'Tag' : 'attribute'})
- soup.find_all('Tag1', attrs = {'Tag' : 'attribute'})
- 3-3. 반복문 활용하기
- 3-1. 최초 Tag 1개 접근하기
- 4. 데이터 저장하기
############################################################
# 1. URL 페이지 소스 가져오기
import requests
url = "https://www.naver.com" # 쓰고자 하는 사이트 주소로 변경
r = requests.get(url) # 페이지 소스를 가져옴
r.text # 페이지 소스 중 text 정보가 있는 것만 추출
############################################################
# 2. HTML 파일 읽어오기
file = open('불러올 파일.html', 'r', encoding='utf-8') # HTML 파일을 'r'(읽기) 모드로 불러옴(encoding으로 한글도 읽음)
html = file.read() # html 변수에다가 파일 내용을 읽어옴
############################################################
# 3. 페이지 소스를 Tag로 접근하기
from bs4 import BeautifulSoup # Tag를 통해 접근가능하게 자료를 바꿔주는 패키지
soup = BeautifulSoup(r.text, 'lxml') # 'lxml'은 Parser의 종류
##############################
# 3-1. 최초 Tag 1개 접근하기
info = soup.Tag
info = soup.find('Tag')
info = soup.find(attrs = {'Tag' : 'attribute'}) # 같은 이름의 Tag가 여러개 있을 때, attribute를 통해 특정
info = soup.find('Tag1', attrs = {'Tag2' : 'attribute'}) # 위의 방식보다 더 세밀하게 특정
info.text # Tag가 담고 있는 text 정보 추출 ex. info = <a>가나다</a>, info.text = '가나다'
info["href"] # Tag가 갖고 있는 class의 정보 추출 ex. info = <a href = 'www.google.com'>구글링크</a>, info['href'] = 'www.google.com'
##############################
# 3-2. 관련 Tag 모두 접근하기
info = soup.find_all('Tag') # Tag가 같은 정보를 모두 찾음
info = soup.find_all(attrs = {'Tag' : 'attribute'}) # attribute를 통해 보다 정확하게 특정
info = soup.find_all('Tag1', attrs = {'Tag2' : 'attribute'}) # 위의 방식보다 더 세밀하게 특정
info_specific = info[number] # 불러온 Tag 집합 중 number로 순서를 특정해서 1개만 고름
info_specific.text # 찾아서 특정한 Tag안의 text 정보 추출
##############################
# 3-3. 반복문 활용하기
info = soup.find_all('Tag')
for i in info: # info에 담긴 Tag 리스트들을 하나하나 접근함
data = i.get('a') # 하나씩 접근한 항목 중 Tag 'a'를 가져옴
############################################################
# 4. 데이터 저장하기
with open('파일명.txt', 'w', encoding='utf-8') as f: # 파일 확장자는 .txt말고 .csv 등이 가능하고 'w'는 쓰기 모드를 뜻함
f.write("아무거나 쓰고 싶은 내용") # 위에서 '파일명.txt'를 f라는 변수명으로 열었으니 f.write를 통해 쓰기 가능
info = soup.find_all('Tag') # 앞의 내용을 활용하여 쓰기도 가능함
for i in info:
data = i.get('a')
f.write(data) # Tag의 내용 중 특정한 정보를 파일에 씀
f.close() # 쓰기를 끝마치고 파일을 꼭 닫아줘야함
############################################################
모두 행복하길
-끝-
728x90
'철기시대 석공 벗어나기 > 코딩 조각' 카테고리의 다른 글
[코드 블록] ANOVA (Analysis of Variance) (0) | 2021.05.15 |
---|---|
[코드 블록] t 검정 (t-test) (0) | 2021.05.14 |
[코드 블록] Plotly으로 그래프 그리기 (0) | 2021.05.10 |
[코드 블록] 캡챠 우회해서 웹 스크래핑/ 크롤링하기 (0) | 2021.05.09 |
[코드 블록] Matplotlib & Seaborn 한글표기 (0) | 2021.05.08 |