[Education]/[Python] 파이썬을 이용한 자동화 스크립트

[Python] 20. 파이썬 Web Scraping - 웹 스크레이퍼, requests모듈, BeautifulSoup4 모듈, lxml 모듈, Tag 객체, CSS셀렉터

starterr 2024. 12. 6. 13:00

1. 스크래이퍼(Scraper)란?

1) 웹 스크레이퍼

- 도메인 이름을 받고 HTML 데이터를 가져옴
- 데이터를 파싱해 원하는 정보를 얻음
- 원하는 정보를 저장함
- 필요하다면 다른 페이지에서도 이 작업을 반복함

 

2) 필요한 모듈들

- requests

- BeautifulSoup4

- lxml

 

 

2. 웹 스크래이퍼 작성

1) 웹 사이트에 연결 및 요청 : HTML 결과를 얻어옴

- requests 모듈 사용 ( pip install requests )

> http://docs.python-requests.org/en/master/

 

requests 모듈 사용
requests 모듈 사용

 

2) 원하는 컨텐츠를 뽑아낸다.

- res.headers
- res.encoding
- res.text
- res.json()

 

 

3) 컨텐츠를 저장한다.

 

 

3. BeautifulSoup 소개

 

1) HTML (XML)을 파싱하기 좋게 파이썬 객체로 돌려준다.

- 잘못된 HTML을 수정하여 반환해줌

 

2) 설치

- pip install beautifulsoup4
- Beautiful Soup 설치 검증
> from bs4 import BeautifulSoup (파이썬 콘솔에서 확인)
- https://www.crummy.com/software/BeautifulSoup/bs4/doc/

 

Beautiful Soup Documentation — Beautiful Soup 4.12.0 documentation

Beautiful Soup Documentation Beautiful Soup is a Python library for pulling data out of HTML and XML files. It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. It commonly saves programmers h

www.crummy.com

 

3) BeautifulSoup 객체 생성

BeautifulSoup 객체 생성
BeautifulSoup 객체 생성

 

cf. html.parser vs lxml
- lxml 모듈을 사용하기 위해서는 먼저 lxml 모듈을 설치해야 한다.

 

4) Tag 객체

Tag 객체
Tag 객체

 

5) NavigableString 객체

- .string vs .text
> .string : td 태그 4개 모두 리턴 : some text None more text None
> .text : 모든 글자를 리턴 : some text more text even more text

 

string vs .text
string vs .text

 

6) 원하는 데이터 추출하기

- 웹 페이지에서 특정 데이터를 추출하기 위해서는 해당 데이터를 포함하는 태그를 찾아야 한다.

 

7) find()와 find_all()

- BeautifulSoup에서 가장 자주 쓰이는 함수


- HTML 페이지에서 원하는 태그를 다양한 속성에 따라 쉽게 필터링할 수 있음
• find(tag, Attributes) # tag.find(‘div’)
• find_all(tag, Attributes) # tag.find_all(’a’, href=‘link3’)
• find(Attributes), find_all(Attributes)
• find(class_=‘box’) # CSS 클래스명으로 찾기

 

- 정규식으로 찾기
• find(re.compile(‘^b’)) # b로 시작되는 첫 번째 태그
• find_all(re.compile(‘t’)) # t를 포함한 모든 태그
• find_all(href=re.compile(‘[\w]{3}’]

 

8) CSS 셀렉터로 찾기

- soup.select("head > title")
- soup.select(".sister") # 클래스명으로 찾기
- soup.select("a#link2") # 아이디로 찾기
- soup.select('a[href^="http://example.com/"]') # 특정문자열로 시작
- soup.select('a[href$="tillie"]') # 특정문자열로 끝남

 

9) 연습문제

http://example.webscraping.com

 

GitHub - richardpenman/wswp_places

Contribute to richardpenman/wswp_places development by creating an account on GitHub.

github.com

 

http://example.webscraping.com
http://example.webscraping.com

 


 

 

[Python] 1. 파이썬 개요, 설치 방법 - 활용 및 특징

 

[Python] 1. 파이썬 개요, 설치 방법 - 활용 및 특징

1. 파이썬이란? 파이썬(Python은 1991년 네덜란드계 소프트웨어 엔지니어인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, '인터프리터를 사용하는 객체지향 언어'이자 플랫폼에 독립적인, 동적

infoofit.tistory.com

 

[PMP] 작업 분할 구조도 (WBS) - PBS/FBS, 개념,구성,특성,작성방법

 

[PMP] 작업 분할 구조도 (WBS) - PBS/FBS, 개념,구성,특성,작성방법

A. WBS(Work Breakdown Structure)란 무엇인가?1) 정의 - 사전적인 의미로는 프로젝트의 범위와 최종산출물을 세부요소로 분할한 계층적 구조도라고 정의한다. - 프로젝트의 요소를 산출물(Product)의 관점

infoofit.tistory.com

 

[Tool] Camunda Modeler - BPMN (비즈니스 프로세스 모델 및 표기법)

 

[Tool] Camunda Modeler - BPMN (비즈니스 프로세스 모델 및 표기법)

​급변하는 비즈니스 환경에서 기업의 생존과 성장을 위해서는 효율적인 프로세스 관리와 신속한 의사결정이 필요합니다.따라서 비즈니스 프로세스 모델링 표기법(BPMN)과 의사결정 모델 및 표

infoofit.tistory.com

 

반응형