일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- beuatifulsoup
- HTML
- superset
- 코테 연습
- 팀 프로젝트
- 코딩테스트
- 데브코스
- airflow
- Spark
- django
- cloud platform
- VPC
- SQL
- Tableau
- Kafka
- 코딩 테스트
- 데이터 엔지니어
- 슈퍼셋
- Snowflake
- PCCP
- Til
- AWS
- Selenium
- 데이터 시각화
- GCP
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
데이터 엔지니어링 8일차 TIL 본문
학습내용
BeautifulSoup
requests 모듈 사용시 아주 긴 텍스트이 정보를 가져오기 때문에 분석이 힘든 점을 보완하여 HTML코드를 분석해주는 HTML Parser를 이용할 수 있다.
res = requests.get('https://www.example.com')
soup = BeautifulSoup(res.text, 'html.parser')
- response의 body를 텍스트로 받고, html로 분석
soup.prettify()
-보기 편한 형태로 만들어준다.
폼 가져오기
-soup.title()
-soup.head()
-soup.body()
태그로 감싸진 특정요소 하나 찾기
- h1=soup.find('h1")
태그로 감싸진 특정요소 모두 찾기
-soup.find_all('p')
태그 이름 가져오기
-h1.name
태그 내용 가져오기
-h1.text
특정 태그를 타겟팅하는 방법
가장 간단하지만 가장 좋지 않은 방법이다.
- 웹사이트의 구조가 바뀌는 경우 다시 해야하기 때문
HTML의 Locator로 원하는 요소 찾기
태그는 자신의 이름 뿐만 아니라 고유한 속성 또한 가질 수 있다.
id와 class는 Lcator로서, 특정태그를 지칭하는데에 사용된다.
tagname : 태그의 이름
id : 하나의 고유 태그를 가리키는 라벨
class : 여러 태그를 묶는 라벨
id=results인 div태그 찾기
soup.find('div', id='results')
class=page-header인 div태그 찾기
find_result = soup.find('div','page-header')
-class검색시엔 class=을 붙이지 않고 바로 사용한다.
strip() : 공백제거
페이지네이션(Pagination)
많은 정보를 인덱스로 구분하는 기법
스크래핑시에 매 페이지마다 찾아야하기 때문에 불편하다.
반복을 통해 여러 페이지에서 정보 스크래핑이 가능하다.
한번에 여러 페이지에 대한 과도한 요청을 보내지 않기위해 time.sleep을 활용한다.
time.sleep(i) : i초 마다 요청을 함
정적 웹 사이트
HTML 내용이 고정된 정적(static)웹 사이트
- 같은 주소로 요청을 보내면 항상 같은 대답을 받을 수 있다.
- HTML문서가 완전하게 응답된다.
동적 웹 사이트
- HTML 내용이 변하는 동적(dynamic)웹 사이트
- 응답 후 HTML이 렌더링이 될 때까지의 지연시간이 존재한다.
ex)인스타그램, 유튜브
동적 웹 브라우저에선 JavaScript가 비동기 처리를 통해서 필요한 데이터를 채운다.
- 불완전한 응답을 받게됨 -> 임의로 시간을 지연한 후, 데이터 처리가 끝난 후의 정보를 가져온다.
Selenium
웹 브라우저를 자동화하는 라이브러리
- 응답 후 시간을 지연시킬 수 있다
- UI와의 상호작용이 가능하다(키보드 입력과 마우스 클릭등의 상호작용이 가능)
느낀 점
아직까지는 학부 때 배운내용이라 큰 어려움 없이 복습한다는 생각이 강하게 들었다.
하지만 다음부터 배울 Selenium부터는 다 처음하는 내용이라 쉽지 않을 것 같다는 생각이 든다.
정적, 동적 웹브라우저에 대해선 생각해본 적이 없었는데 인스타그램,유튜브 등 동적 웹브라우저가 강세를 띄는 만큼 점점 더 중요하게 생각해야 할 내용인 것 같다.
'데브코스' 카테고리의 다른 글
데이터 엔지니어링 10일차 TIL (0) | 2024.04.05 |
---|---|
데이터 엔지니어링 9일차 TIL (0) | 2024.04.04 |
데이터 엔지니어링 7일차 TIL (0) | 2024.04.02 |
데이터 엔지니어링 6일차 TIL (0) | 2024.04.01 |
데이터 엔지니어링 5일차 TIL (2) | 2024.03.29 |