웹스크래핑에 필요한 이론

2023. 4. 16. 22:23·python/python_selenium

1. HTML

<html>
    <head>
        <meta charset="utf-8">
        홈페이지 제목, 선행작업 진행
        <title>홈페이지 타이틀</title>
    </head>
    <body>
        <h1>웹페이지의 본문</h1>
        안녕하세요, 조○○입니다.
        <input type="text" value="아이디를 입력하세요.">
        <input type="password">
        <input type="button" value="로그인">
        <a href="http://gogole.com"> 구글로 이동하기 </a>
        <!--type과 value는 attribute라고 하며 element의 세부 속성을 의미함.-->
    </body>
</html>
  • 웹스크래핑 : 웹페이지에서 내가 원하는 부분만 떼오는 것
  • 웹 크롤링 : 페이지가 주어지면 링크를 따라가며 내용을 가져오는 것.
  • HTML : 웹사이트의 뼈대를 의미함.
  • CSS : 웹사이트의 디자인적인 요소를 의미함
  • Java Script : 웹사이트 내의 움직임, 작업 등을 의미함.

2. Xpath

# xpath = html 코드에서 어떠한 값의 경로를 의미함.
<학교 이름 = "나도고등학고">
    <학년 value = "1학년">
        <반 value = "1반">
            <학생 value = "1번" 학번 = "1-1-1"> 김○○ </학생>
            <학생 value = "2번" 학번 = "1-1-2"> 박○○ </학생>
            <학생 value = "3번" 학번 = "1-1-3"> 최○○ </학생>
            <학생 value = "4번" 학번 = "1-1-4"> 조○○ </학생>
            <학생 value = "5번" 학번 = "1-1-5"> 김○○ </학생>
        </반>
        <반 value = "2반"/>
        <반 value = "3반"/>
        <반 value = "4반"/>
    </학년>
    <학년 value = "2학년"/> ... 3반 박○○ <...>
    <학년 value = "3학년"/>
</학교 이름>

비슷한 tag or element가 있을 때 어떤 element를 지칭하는지 명확하게 하기 위해 xpath 사용

xpath형식 = /학교/학년/반/학생[n]/...
unique 값이 있을 때 = //*[@학번 = "1-1-5"]

/ : 위치한 곳에서 한단계 아래
// : 하위 elelment에서 모두 찾아옴.
* : 모든 태그를 의미함.

ex) 네이버 로그인 버튼의 xpath
//*[@id="account"]/a
  • xpath = html 코드에서 어떠한 값의 경로를 의미함.

3. Request

import requests

# 응답코드가 403이면 권한없음.
res = requests.get("https://rusharp.tistory.com/18")
print("응답코드 : ",res.status_code) #403

# 응답코드가 200이면 정상
res = requests.get("http://nadocoding.tistory.com")
print("응답코드 : ",res.status_code)

res = requests.get("https://google.com")
print("응답코드 : ",res.status_code)

# requests.codes.ok == 200
if res.status_code == requests.codes.ok:
    print("정상입니다.")
else :
    print("문제가 생겼습니다. [에러코드 : {}]".format(res.status_code))

# html 을 올바로 가져오는 경우 pass
# html 을 가져오는 중 오류발생 시, 에러발생 진행.
res.raise_for_status()
print("웹 스크래핑을 진행합니다.")

# res 의 html 값을 가져옴.
# print(res.text)

# mygoogle.html 을 쓰기모드로 열고 res.text를 입력.
with open("mygoogle.html", "w", encoding="utf8") as f:
    f.write(res.text)
  • html 정보를 가져오는 데 쓸 수 있는 라이브러리
  • res = request.get(사이트) : 서버에서는 사이트에 대한 요청에 대한 응답 저장.
  • 응답코드 : res.status_code ㄴ 200 : 클라이언트의 요청을 서버가 정상적으로 처리 ㄴ 403 : 클라이언트가 권한이 없기 때문에 작업을 진행할 수 없음 ㄴ 500 : 서버 오류로 인해 요청을 수행할 수 없다는 의미
  • res.raise_for_status() : html문서를 올바르게 가져오면 정상작동 / 그외 에러발생

'python > python_selenium' 카테고리의 다른 글

BeautifulSoup4 활용2  (0) 2023.04.22
BeautifulSoup4 활용1  (0) 2023.04.19
BeautifulSoup4 기본  (0) 2023.04.18
user agent  (0) 2023.04.17
정규식  (0) 2023.04.17
'python/python_selenium' 카테고리의 다른 글
  • BeautifulSoup4 활용1
  • BeautifulSoup4 기본
  • user agent
  • 정규식
몽자비루
몽자비루
QA에 대한것을 공부하기 위한 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (197)
      • python (31)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (33)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (3)
      • 에러일기 (1)
      • Server&load (36)
        • AWS (27)
        • load test (5)
        • CI CD (4)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (12)
      • git&github (7)
      • 개인 프로젝트 웹사이트 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스터디
    애플리케이션로그
    .cpu
    공존성테스트
    API
    linux
    로스트아크api
    테스트 결과보고서
    리눅스
    테스트스크립트
    k8s
    개발자에서아키텍트로
    QAKOREA
    도커
    e2c
    qa
    포스트맨
    vi에디터
    qa conference
    postman
    쿠버네티스
    cka
    로스트아크
    네트워크 테스트
    앱공존성
    python
    LOSTARK
    사드웨어리소스
    qa 컨퍼런스
    application log
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
웹스크래핑에 필요한 이론
상단으로

티스토리툴바