1. 스크래이퍼(Scraper)란?
1) 웹 스크레이퍼
- 도메인 이름을 받고 HTML 데이터를 가져옴
- 데이터를 파싱해 원하는 정보를 얻음
- 원하는 정보를 저장함
- 필요하다면 다른 페이지에서도 이 작업을 반복함
2) 필요한 모듈들
- requests
- BeautifulSoup4
- lxml
2. 웹 스크래이퍼 작성
1) 웹 사이트에 연결 및 요청 : HTML 결과를 얻어옴
- requests 모듈 사용 ( pip install requests )
> http://docs.python-requests.org/en/master/
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/
3) BeautifulSoup 객체 생성
cf. html.parser vs lxml
- lxml 모듈을 사용하기 위해서는 먼저 lxml 모듈을 설치해야 한다.
4) Tag 객체
5) NavigableString 객체
- .string vs .text
> .string : td 태그 4개 모두 리턴 : some text None more text None
> .text : 모든 글자를 리턴 : some text more text even more 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
[Python] 1. 파이썬 개요, 설치 방법 - 활용 및 특징
[PMP] 작업 분할 구조도 (WBS) - PBS/FBS, 개념,구성,특성,작성방법
[Tool] Camunda Modeler - BPMN (비즈니스 프로세스 모델 및 표기법)