728x90
What is Web Scraping??
- 정의
- 단일 웹페이지에서 원하는 정보를 추출하는 행위
- Web Crawling vs Web Scraping
- Web Crawling : URL을 탐색해 반복적으로 링크를 찾고 정보를 가져오는 과정으로, 특정 웹페이지를 목표로 하지 않음
- Web Scraping : 우리가 정한 특정 웹페이지에서 데이터를 추출
Web Scraping Process
1) 웹페이지 열기
- 요청 (Request) : 클라이언트 혹은 사용자가 특정 서버에 리소스나 서비스를 요청하는 과정
- 응답 (Response) : 요청한 사항에 대해 서버가 클라이언트 혹은 사용자에게 리소스나 서비스를 제공하는 과정
2) Client
- 서버에서 제공하는 서비스를 받는 입장
- 데스크탑, 태블릿과 같은 장비일 수 있음
- Chrome, firefox 등의 웹 브라우저일 수 있음
3) Server
- 리소스 혹은 서비스를 제공하는 입장
- 웹서버, 메일서버, 파일서버 등 다양한 서버가 있음
- 여러 Client를 대상으로 서비스를 제공
4) 이 후
- HTML or CSS 태그 등 필요한 정보가 담겨져 있는 태그를 찾아 정보 위치 탐색
- 필요한 정보를 추출 후 저장
웹페이지 구성 요소
1) HTML
- Hyper Text Markup Language
- 웹페이지 Contents(텍스트, 이미지 등)를 정의
- 하이퍼텍스트와 마크업 언어를 합친 언어
- 하이퍼텍스트 : 하이퍼링크를 통해 한 문서에서 다른 문서로 접근할 수 있는 텍스트
- 마크업 언어 : 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어
- 확장자 : .html
- 구조 : 트리 구조 (계층 구조)
태그 | 역할 |
<html> | HTML 문서의 시작과 끝을 의미 |
<head> | 브라우저가 문서를 해석하는데 필요한 정보 |
<title> | 브라우저의 제목 표시줄에 들어갈 내용 |
<body> | 웹페이지주요 정보 |
<font> | 글씨체에 관한 속성, color, face 등 설정 가능 |
<img> | 이미지에 관한 속성, src, width, height 등 설정 가능 |
<table> | 표, 테이블을 만드는 태그 |
<th> | 테이블의 헤더 부분을 만드는 태그 |
<tr> | 테이블의 행을 만드는 태그 |
<td> | 테이블의 열을 만드는 태그 |
<h1>, <h2>, <h3>, <h4>, ... | 크기가 다른 텍스트, 숫자가 클수록 글씨 크기는 작아짐 |
<p> | 텍스트 문단을 지정 |
<li> | 목록을 만들 때 사용 |
<div> | 볼록 단위로 페이지의 부분 공간을 정의 (레이아웃) |
<span> | 줄 단위로 페이지의 부분 공간을 정의 |
<br> | 줄바꿈 태그 |
2) CSS
- CSS (Cascading Style Sheets)
- HTML로 입력한 요소에 대해 디자인 스타일을 적용할 때 사용하는 언어
- 웹페이지 구성 요소의 크기, 색상 변경 등
- 확장자 : .css
3) JavaScript
- 웹페이지의 동작과 상호작용을 정의
- 동작 예시 : 움직이는 요소, 이미지 슬라이더 등
- 상호작용 : 사용자가 마우스를 올리면 메뉴 보여주기 등
실제로 Web Scraping 해보기 (BeautifulSoup)
- What is BeautifulSoup?
- python에서 scraping하는데 필요한 함수를 모아놓은 라이브러리
## 필요한 패키지 import
from bs4 import BeautifulSoup
## html 태그 예시
html_str = """
<html>
<head>
<title>Intro to Web Scraping</title>
</head>
<body>
Life is short. You need Python.
</body>
</html>
"""
## beatifulsoup을 이용해 html 태그 parsing
## head 태그 탐색
bs_obj = BeautifulSoup(html_str, 'html.parser')
head = bs_obj.find('head')
print(head)
## div 태그 탐색
## find_all 함수로 모든 div 태그 부분 탐색
div = bs_obj.find_all('div')
print(div)
## 모든 li 태그 탐색
## 알고 싶은건 태그의 실제 텍스트, 내용이므로 text 인자로 텍스트를 추출해 출력
li = ul[0].find_all('li')
for x in li:
print(x.text)
[프로젝트] 티스토리 블로그 Web Crawling
오늘은 NLP Task 프로젝트에서 도움될만한 글을 적어보겠습니다. 네이버 블로그, 지식iN, 뉴스 등은 API로 크롤링할 수 있습니다.자세한 내용은 아래 링크 활용해주시면 감사하겠습니다. 블로그 - S
dangingsu.tistory.com
[NLP] Web Crawling, Selenium
Dynamic Web Page정적 웹페이지서버에 미리 저장된 파일(HTML, JavaScript 등)이 그대로 전달되는 웹페이지보여지는 화면이 바뀌지 않음Client가 요청하면 페이지를 그대로 전송 (응답)누가, 언제 접속해도
dangingsu.tistory.com
728x90
반응형
'NLP' 카테고리의 다른 글
[NLP] Similarity, 문서 유사도 측정 (0) | 2024.07.06 |
---|---|
[NLP] Text Data Preprocessing (0) | 2024.07.02 |
[NLP] 정규 표현식, Regular Expression (0) | 2024.07.01 |
[NLP] API를 활용한 Web Crawling (0) | 2024.06.29 |
[NLP] Web Crawling, Selenium (0) | 2024.06.28 |
[NLP] 자연어처리 토큰화작업 2, 하위 단어 토큰화 (0) | 2024.03.13 |
[NLP] 자연어처리 토큰화작업(KoNLPy, NLTK, SpaCy) (2) | 2024.03.07 |
[NLP] 파이토치(Pytorch)를 이용한 텍스트 데이터 증강 (0) | 2024.02.29 |