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문서를 올바르게 가져오면 정상작동 / 그외 에러발생