웹스크래핑에 필요한 이론

몽자비루 ㅣ 2023. 4. 16. 22:23

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