728x90
반응형

생성형 AI

  • Upstage: 네이버에서 퇴사하고 만듦
  • perplexity: 웹스크래핑에 좋음
  • claude: 언어 하는 사람이 선호/ 번역, 요약/ 웹스크래핑 제일 못함

웹 스크래핑 수집 과정

웹스래핑 과정을 10가지 단계로 나열하고 안 되는 과정에 대한 피드백을 추가해서 작성할 것

위 과정을 mermaid 코드로 작성

 

ChatGPT

A conversational AI system that listens, learns, and challenges

chatgpt.com

Mermaid 코드


      
graph TD
A[1. 목표 데이터 정의] --> B[2. 웹 페이지 분석]
B --> C[3. 스크래핑 도구 선택]
C --> D[4. HTTP 요청 보내기]
D --> E[5. 데이터 추출]
E --> F[6. 데이터 정제]
F --> G[7. 데이터 저장]
G --> H[8. 오류 처리 및 예외 관리]
H --> I[9. 스크래핑 자동화]
I --> J[10. 법적 검토]
%% Feedback lines
subgraph Feedback
F1[목표 데이터가 불명확하면 데이터 누락 가능] --> A
F2[웹 페이지 구조를 잘못 분석하면 잘못된 데이터 추출 가능] --> B
F3[부적절한 도구 선택으로 인한 효율 저하 가능] --> C
F4[잘못된 요청으로 인해 페이지 불러오기 실패 가능] --> D
F5[잘못된 선택자로 인해 데이터 추출 실패 가능] --> E
F6[데이터 정제를 소홀히 하면 오류 발생 가능] --> F
F7[저장 형식 문제로 데이터 손실 가능] --> G
F8[예외 처리 부족으로 인해 스크래핑 중단 가능] --> H
F9[자동화 설정이 부적절하면 서버에 부하 발생 가능] --> I
F10[법적 검토 미흡 시 법적 문제 발생 가능] --> J
end

 

Online FlowChart & Diagrams Editor - Mermaid Live Editor

 

mermaid.live


웹 크롤링 vs. 스크래핑

웹크롤링

  • 인터넷 상에 존재하는 웹 페이지들을 자동으로 탐색 -> 원하는 데이터 수집하는 기술
  • 웹 크롤러) (사이트 방문 -> 해당 페이지의 하이퍼링크 따라가며 새로운 페이지 찾음) 반복 -> 원하는 페이지 모두 수집
  • 수집된 데이터 -> 검색엔진으로 사용되어 인덱싱 or 분석에 활용

웹 스크래핑

  • 웹 페이지의 구조 분석, 웹페이지에서 필요한 데이터 추출하는 기술
  • 웹 스크래퍼) 웹 페이지의 HTML 구조 파싱 -> 원하는 데이터 추출
  • 추출된 데이터 -> 데이터베이스 or 파일로 저장하여 활용

API 통신 방식

  • REST: 클라이언트/서버 접근 방식 기반 -> API의 프론트엔드와 백엔드 분리, 개발 및 구현에 상당한 유연성 제공
  • RPC(원격 프로시저 호출): 여러 매개변수 보내고 결과를 받는 방식으로 작동
  • SOAP: HTTP, SMTP, TCP 등 인터넷 전반에서 발견되는 다양한 통신 프로토콜 지원
  • WebSocket: 브라우저와 서버 간의 지속적인 연결 ~> 데이터 교환하는 방법 제공

request ~> HTTP 요청

  • HTTP 요청을 처리하는 라이브러리로 Python으로 요청 보내고 응답 받을 수 있음
  • GET, POST, PUT, DELETE 등의 다양한 HTTP 메소드 사용
  • 다양한 인증 방식과 SSL 인증서 검증 등의 기능 지원


HTTP 프로토콜

  • 인터넷에서 데이터를 주고받기 위한 통신 규약 중 하나로, 웹 브라우저와 웹 서버 간에 사용
  • 역할: 클라이언트와 서버 간의 데이터 통신을 가능하게 하는 것
  • 클라이언트 -요청-> 서버 -응답-> 클라이언트
  • 목적: 웹 페이지, 이미지, 비디오 등 다양한 미디어 자원 전송하는 것

HTTP 요청과 응답 메시지의 구조와 특징

  • HTTP 요청 메시지: 요청 라인/ 헤더/ 본문
  • 요청 라인: 요청 메소드/ 요청 URI/ HTTP 버전
  • 헤더: 요청 메시지에 대한 정보
    • 일반 헤더 필드/ 요청 헤더 필드/ 엔티티 헤더 필드
  • 본문: 요청 메시지에 대한 추가 정보, 생략될 수 있음

HTTP 메소드의 기능과 사용 방법

  GET POST
전송방식  URL 뒤에 파라미터 붙여서 데이터 전송 HTTP 요청 본문에 데이터 실어서 전송
보안 노출되는 파라미터 O -> 보안적으로 취약 요청 본문에 데이터 실어서 전송
-> 보안적으로 안전
캐시 사용 O -> 동일한 URL에 대한 요청 캐시 O 사용 X -> 항상 새로운 데이터 수신
용도 데이터를 요청할 때 사용 데이터를 전송할 때 사용
ex. 검색어 전송, 회원가입, 게시물 작성

 


쿼리 스트링(Query String)

  • URL에 파라미터를 추가하여 요청을 보낼 때 사용되는 문자열
  • "?" 다음에 오는 이름과 값이 쌍을 이루는 문자열로 구성
  • 여러 개의 파라미터 연결하여 사용할 수 있고 각각의 파라미터 "&"로 구분
    • ex. http://example.com/search?q=apple&category=fruit" 
      • q와 category: 파라미터 이름
      • apple과 fruit: 해당 파라미터 값
  • 웹 크롤링에서 웹 페이지의 특정 부분에 접근 or 검색어나 필터링 등의 조건 지정하여 데이터 수집
  • GET 요청 메서드 사용하여 데이터 전송 -> 요청한 데이터 URL 상에 노출
  • 보안상 민감한 정보를 쿼리 스트링에 담아서 전송 X -> POST 요청 메서드 사용하여 데이터 전송

웹사이트 데이터 수집 실습

  1. 생성형 AI(perplexity)를 사용하여 관심 있는 웹 사이트에서 데이터 수집하기
  2. 수집한 데이터를 SQLite Database에서 확인하기
 

SQLite Viewer Web App

SQLite Viewer Web App SQLite Viewer Web is a free, web-based SQLite Explorer, inspired by DB Browser for SQLite and Airtable. Use this web-based SQLite Tool to quickly and easily inspect .sqlite files. Your data stays private: Everything is done client-sid

sqliteviewer.app

한국경제신문에서 가상화폐 관련 뉴스 데이터 수집

1. 한국경제신문에 가상화폐 검색 > 도구 더보기 > 개발자 도구

개발자 도구 -> Mac 단축키: option + command + i

 

2. Network 탭 > Doc (Header, Payload, Preview, Response 확인)

Header의 General 내용과 Payload 내용 복사

예시 HTML 복사(Copy > Copy outerHTML)

 

3. 아래 내용을 perplexity에 넣기

다음 정보를 참고해서 데이터를 수집하는 파이썬 코드를 작성하고
데이터는 sqlitedb 에 저장하고 판다스로 읽어와서 확인하는 코드까지 작성할 것

// 헤더 
Request URL:https://search.hankyung.com/search/news?query=%EA%B0%80%EC%83%81%ED%99%94%ED%8F%90&mediaid_clust=HKPAPER,HKCOM
Request Method:GET
Status Code:200 OK
Remote Address:104.18.0.245:443
Referrer Policy:strict-origin-when-cross-origin

// qayload
query: 가상화폐 mediaid_clust: HKPAPER,HKCOM

// 응답 일부
<li> <div class="txt_wrap"> <div class="thumbnail"> <a href="https://www.hankyung.com/article/2024082428897" target="_blank"><img src="//img.hankyung.com/photo/202408/99.36427503.3.jpg" alt="thumbnail" style="width: 100%; position: absolute; left: 0px; top: 50%; margin-top: -33px;"></a> </div> <a href="https://www.hankyung.com/article/2024082428897" target="_blank"> <em class="tit" data-pm="N">9월 금리인하 소식에…비트코인도 '들썩'</em> </a> <p class="txt"><strong class="keyword">가상화폐</strong> 대장주 비트코인이 급등하고 있다. 미국 기준 금리 인하가 가시권에 들어왔고 미 대선에서 무소속 로버트 케네디 주니어 후보가 도널드 트럼프 전 대통령을 지지하면서다. 23일(서부 시간) 낮 12시 30분 비트코인 1개당 가격은 24시간 전보다 5.82% 오른 6만3650달러(8455만원)에 거래됐다. 비트코인이 6만3000달러선에 오른 것은 지난 2일 이후 21일 만이다. 이날 6만 달러 초반대에서 등락하던 비트코인은 제롬 파월 미국 중앙은행(Fed) ...</p> <p class="info"> <span>한국경제</span> | <span class="date_time">2024.08.24 08:02</span> | 이송렬 </p> <div class="hash_wrap"> <span><a href="https://www.hankyung.com/tag/가상화폐">#<strong class="keyword">가상화폐</strong></a></span> <span><a href="https://www.hankyung.com/tag/대장">#대장</a></span> <span><a href="https://www.hankyung.com/tag/비트코인">#비트코인</a></span> <span><a href="https://www.hankyung.com/tag/9월">#9월</a></span> <span><a href="https://www.hankyung.com/tag/금리">#금리</a></span> <span><a href="https://www.hankyung.com/tag/인하">#인하</a></span> <span><a href="https://www.hankyung.com/tag/도널드-트럼프">#도널드 트럼프</a></span> </div> </div> </li>

 

4. SQLite로 DB 확인

virtual_currency_news.db
0.02MB


29cm에서 Best 데이터 수집

29cm_products.db
0.02MB

 

 

 

데이터 수집 실습.ipynb

Colab notebook

colab.research.google.com


후기

웹 스크래핑에 관심이 있어서 신청했는데 코드를 직접 작성하는 것이 아닌 생성형 AI가 코드를 작성하는 것이라 아쉬웠다

그래도 손쉽게 데이터를 수집할 수 있어서 좋았고 동적, 정적 웹 스크래핑 코드에 대해 더 자세히 뜯어보고 싶어졌다.

 

오늘 언급된 단어들 중 개념을 잘 모르고 낯선 단어들이 있었다.

selenium(셀리니움), Beautiful Soup(뷰티풀수프, 뷰슾)/ (LangChain)랭체인

 

위의 단어들과 perplexity가 작성해준 코드는 다음에 자세히 블로깅 해야겠다


출처

 

✨ 생성형 AI와 Python을 활용한 웹 스크래핑: 실습하고 경험 나누기 ✨, 2024년 8월 24일 (토) 오후 1:0

# ✨ 생성형 AI와 Python을 활용한 웹 스크래핑: 실습하고 경험 나누기 ✨ 안녕하세요! 지난 번 조은님이 발표해주신 웹 스크래핑 세미나에서 뜨거운 관심을 받아, 직접 실습하고 경험을 나눌 수 있

www.meetup.com

 

Join PyLadies on Slack!

Join PyLadies on Slack. 12165 users are registered so far. or sign in. powered by slackin

slackin.pyladies.com

 

728x90
반응형
0123suh