[python] 웹 크롤링(정보수집) /HTML

Seoyu Kwak·2025년 8월 6일

python

목록 보기
9/11





📌 7일차 배운 내용 목차



번호주제내용
1웹 크롤링- robots.txt
- requests 라이브러리 → GET/POST 요청 데이터 수집
- BeautifulSoup 라이브러리
2HTML- 구성 요소
- 태그






✏️1. 웹 크롤링(정보수집)





✔️web crawling / scraping 개념

  • 웹사이트에서 데이터를 자동으로 가져오는 기술
  • 검색 엔진도 크롤링 및 스크래핑을 활용하여 정보 수집

crawling?
: 여러 웹페이지를 탐색하면서 정보 추출

scraping?
: 특정 웹페이지에서 필요한 데이터만 추출함








robots.txt

  • 액세스 하거나 정보수집이 가능하는 페이지등을 알려주는 .txt파일
  • 검색엔진은 해당 txt 내용을 기반으로 허용되지 않는 페이지로부터 정보수집을 원칙적으로 하지 않음








requests 라이브러리 활용

  • 웹페이지 데이터를 가져오기 위한 HTTP 요청 라이브러리
  • GET , POST 요청을 사용하여 데이터 수집!
구분GET 방식POST 방식
데이터 전송 방식URL에 데이터를 포함하여 전송 (쿼리스트링)HTTP 메시지 본문(Body)에 데이터를 포함
URL 표시 여부데이터가 URL에 표시됨데이터가 URL에 표시되지 않음
보안성낮음 (데이터가 URL에 노출됨)높음 (데이터가 본문에 숨겨짐)
전송 데이터 크기 제한브라우저 및 서버에 따라 제한 존재 (약 2048자)상대적으로 큰 데이터 전송 가능
용도데이터 조회, 검색 등 (읽기 전용 요청)로그인, 회원가입, 파일 업로드 등 (데이터 변경 요청)
멀티파트 전송지원하지 않음지원함 (파일 업로드 등 멀티파트 데이터 전송 가능)
속도빠름 (간단한 데이터 전송)상대적으로 느림 (본문 처리 필요)
Idempotent (멱등성)예 (같은 요청을 반복해도 결과가 동일함)아니오 (같은 요청이라도 결과가 달라질 수 있음)








HTTP 상태 코드

1) 200 : 요청 성공
2) 404: Not Found 페이지 없음
3) 403: Forbidden 접근금지
4) 500: internal Derver Error 서버오류








요청을 통한 응답 데이터 처리

속성 / 메서드설명
response.text응답 본문을 문자열(str)로 반환
response.content응답 본문을 바이트(bytes)로 반환
response.json()응답 본문을 딕셔너리(dict)로 반환








BeautifulSoup

  • HTML/XML을 파싱하여 데이터를 추출하는 라이브러리
  • find()와 find_all()메서드를 활용하여 특정 태그 검색 가능!
  • find() : 특정 태그에서 첫 번째 요소 가져오기
  • find_all(태그) : 특정 태그에서 모든 요소 가져오기
  • select() : 선택자를 활용해 데이터 가져오기

BeautifulSoup 이용

1) 네이버

2) 롯데리아






✏️2. HTML





✔️Hyper Text?

현재 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트

HTTP ( Hyper Text Transfer Protocol)?
: 인터넷에서 하이퍼 텍스트 문서를 교환하기 위하여 사용되는 통신규약

HTML(Hyper Text Markup language)?
: 웹 페이징에 정보를 담아 표시하기 위한 마크업 언어








연습 예시

1) 주어진 결과물을 보고 똑같이 만들어보기!! ( 성공!)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <!-- CSS 만들기 위한 style 태그 생성!! -->
    <style>
        /* 모든 th에 적용할 스타일 정의 */
        th{
            background: gray;
            height: 50px;
            text-align: left;
        }
        tr{
            background: whitesmoke;
            height: 35px;
        }

        /* class = section 클래스에 적용하자 */
        .section{
            text-align: right;
        }
        
        /* id = exam1에 적용하자*/
        /* id는 고유하므로 html하나에 중복되지 않게 적용하자!! ...가능은 하나 웹배포 X*/
        #exam1{
            color: red;
            font-weight: bold;
        }

    </style>

</head>

<body>
    <h3>테이블 실습</h3>

    <!-- Ctrl + A로 전체 블록 -->
    <!-- Ctrl + K, F : 정렬 -->

    <form action="" method="get">
        <table>
            <tr>
                <th colspan="2">Step 1 : 아이디/비번 입력</th>
            </tr>
            <tr>
                <td class="section">아이디</td>
                <td><input type="text"></td>
            </tr>
            <tr>
                <td class="section">비밀번호</td>
                <td><input type="password"></td>
            </tr>
            <tr>
                <td class="section">비밀번호 확인</td>
                <td><input type="password"></td>
            </tr>

            <tr>
                <th colspan="2">Strp2 : 개인정보</th>
            </tr>

            <tr>
                <td class="section">성별</td>
                <td><input type="radio" name="gender"><input type="radio" name="gender"> </td>
            </tr>
            <tr>
                <td class="section">혈액형</td>
                <td>
                    <select>
                        <option>A형</option>
                        <option>B형</option>
                        <option>O형</option>
                        <option>AB형</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td class="section" id="exam1">생일</td> <!-- id를 태그를 부여-->
                <td><input type="date"></td>
            </tr>

            <tr>
                <th colspan="2">Step3 : 선호도</th>
            </tr>

            <tr>
                <td class="section">취미</td>
                <td>
                    축구 <input type="checkbox">
                    야구 <input type="checkbox">
                    농구 <input type="checkbox">
                </td>
            </tr>
            <tr>
                <td class="section">좋아하는 색깔</td>
                <td><input type="color"></td>
            </tr>

            <tr>
                <th colspan="2">Step4 : 적고 싶은 말</th>
            </tr>
            <tr>
                <td colspan="2">
                    <textarea cols="56" rows="5"></textarea>
                </td>
            </tr>

            <tr>
                <td style="text-align: center;" colspan="2">
                    <input type="submit" value="제출">
                    <input type="reset" value="초기화">
                </td>
            </tr>
        </table>
    </form>
</body>

</html>

2)

3)

4)

5)

6)

7)








0개의 댓글