CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·방탄소년당 ·일본산당 ·개발한당 ·자전거당 ·이륜차당 ·소시당 ·AI당 ·패스오브엑자일당 ·안드로메당 ·나스당 ·클다방 ·바다건너당 ·걸그룹당 ·사과시계당 ·물고기당 ·전기자전거당 ·노젓는당 ·노키앙 ·가상화폐당 ·곰돌이당 ·윈폰이당 ·축구당 ·키보드당 ·리눅서당 ·IoT당 ·창업한당 ·소셜게임한당 ·여행을떠난당 ·골프당 ·콘솔한당 ·디아블로당 ·찰칵찍당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·육아당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

기타 파이썬으로 크롤링 하는 방법 4가지. 20

38
2020-07-12 16:59:33 수정일 : 2020-07-13 12:11:49 221.♡.72.203
sagein

업무나 데이터 모아 전처리를 위해 

파이썬으로 크롤링하시는 분들 많으실텐데요.

다 아시겠지만 그동안 공부한 걸 정리할겸 적어봅니다.


1. html 크롤링


requests 으로 페이지 정보 요청하고 뷰슙으로 HTML 구문분석하는 간단한 방법입니다.

import requests
from bs4 import BeautifulSoup
targetUrl = "타켓주소......"
source_code = requests.get(targetUrl, allow_redirects=False)
soup = Be autifulSoup(source_code.content, 'html.parser', from_encoding='utf-8')
list_data = soup.find_all('li')
for item in list_data:
      print("item")
......
.....



2. xhr 로그 기록으로 크롤링하기

requests 으로 페이지 정보 요청했는데 원하는 데이터가 없을때

Ajax 통해서 데이터를 주고 받는 경우라면 사용 가능한 방법입니다.


크롬 기준으로 F12(개발자모드) - 네트워크탭을 클릭 - XHR를 필터링하여  확인합니다

.

잘못된 형식의 이미지 링크입니다.


원하는데이터가 통신하는 부분을 찾아 response 부분을 확인하여 데이터를 확인합니다.

json 일수도 있고 html 일 수도 있습니다. 

headers 를 클릭하여 post로 요청한는지 get으로 요청하는지 확인하여

post이면 해더정보를 보고 채워서 해더와 파라미터를 채워 보내줍니다.

headers ={
    "Referer": "http://블라블라블라",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
}
params = {
    "goodsCode": "1010101010",
    "pageNo": "2",
    "totalPage": "330"
}

res = requests.post("http://.....요청주소", headers=headers, data=params)
soup = BeautifulSoup(res.text, "html.parser")


get이면 headers 클릭후 Request URL에서 요청 주소만 찾아서 보내면 됩니다. 데이터를 가져오니까

그대로 데이터를 뷰슙이나 json형태로 처리하면 됩니다.


3. <script> </script> 안에 자바스크립트로 데이터가 들어 있을때

Ajax로 통신도 안하고 html 안에도 원하는 데이터가 안보이면 자바스크립트 부분을 확인합니다.

<script>  부분을 정규표현식으로 뽑아와 처리합니다.

그대로 데이터를 뷰슙이나 json형태로 처리하면 됩니다.


4. 셀레니움으로 크롤링 하기

위에 방식으로 처리가 안되는 홈페이지거나. 물리적인 버튼을 클릭해야 하거나 한다면 마지막으로 

셀레니움을 이용하여 데이터를 뽑아옵니다. 


보통 HTML을 뷰슙으로 긁어봣더니 데이터가 없으면 바로 셀레니움으로 하시는분들이 많이 있더라구요.

확실한 방법이긴 하지만.. 리소스도 많이 먹고 느리기도 하고 나머지 방법을 활용 해보심이 좋을거 같습니다.

즐거운 파이썬하세요 : )




sagein 님의 게시글 댓글
SIGNATURE
한때는 C# 개발자..
서명 더 보기 서명 가리기
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [20]
렉코
IP 58.♡.70.22
07-12 2020-07-12 17:39:23
·
정보 감사합니다!
iopqoi
IP 116.♡.168.110
07-12 2020-07-12 18:11:30
·
3번이나 2번이 참 어려운게 어떤 사이트들은 바이트스트림으로 들여와서 지지고 볶고난 후 문자열로 튀어나오는걸 사용하더라구요.
나무위키 자동완성이 그렇게 하는편이던데 이건 또 js파일이 난독화 되어있고 배배 꼬아놔서 그냥 시간 낭비인거같아 포기했습니다 -_-
Miso
IP 125.♡.254.55
07-13 2020-07-13 11:23:01
·
@iopqoi님 아이디 : yafeelsogood
Tiramisu
IP 116.♡.146.86
07-12 2020-07-12 21:33:22
·
추추천!
Damper
IP 118.♡.77.136
07-12 2020-07-12 22:17:17 / 수정일: 2020-07-12 22:17:24
·
파이썬으로 열심히 크롤링 배웠는데 공인인증서까지 자동화 하려면 자바를 공부해야되는 것을 알고 좌절했던 기억이 나는군요..
별명없음ㅁ
IP 115.♡.135.118
07-12 2020-07-12 23:23:53
·
Damper님// 언어 상관없이 키보드 입력제어 플러그인이 있으면 불가능합니다...인증서키를 입력할수가 없지요 ㅠ
AlbaChiara
IP 180.♡.192.107
07-21 2020-07-21 02:20:25
·
@Damper님 uiPath 같은 rpa 툴을 쓴다면 공인인증서 필요한 사이트도 쉽게 자동화 가능합니다
별명없음ㅁ
IP 115.♡.135.118
07-12 2020-07-12 23:22:36
·
angular같은거 쓰면 셀레니움말고는 답이 없지요 ㅠ
wooha
IP 125.♡.116.68
07-13 2020-07-13 00:09:04
·
파이썬 배워야 겠네요.
개맛고양이
IP 122.♡.26.209
07-13 2020-07-13 00:11:28
·
네이버 크롤링 해볼라고 했는데 로그인에서 막혔;;
izzian
IP 125.♡.107.195
07-13 2020-07-13 03:10:56
·
@개맛고양이님 그거 해주는 라이브러리 있구요 로그인 상태 정보를 리퀘스트에 추가해주시면 문제 없어요
개맛고양이
IP 122.♡.26.209
07-13 2020-07-13 11:03:07
·
@다림질님 로봇 방지 체크 로직에서 막혔어요
고은재
IP 221.♡.94.249
07-13 2020-07-13 12:20:58
·
@개맛고양이님 셀레니움으로 로그인 하고 쿠키 따서 쓰시면..
로봇 방지 체크는 너무 많이 시도 안하면 안뜨니까요
doraem
IP 39.♡.48.108
07-13 2020-07-13 02:12:13
·
요샌 퍼페티어나 셀레니움아니면 답없는 경우가 많죠..
iljllllj!l
IP 182.♡.238.184
07-13 2020-07-13 02:22:13
·
2번이 가장 쉽지만 가장 어려운 방법인것 같아요. 페이스북처럼 난독화되어있는 건 시간 쏟아서 뚫어도 금방금방 바뀌니..
izzian
IP 125.♡.107.195
07-13 2020-07-13 03:11:36
·
참고로 fake headers라는 것도 있더라구요.
Tasna
IP 106.♡.67.46
07-13 2020-07-13 07:22:28
·
저도 딱 마지막 문단 처럼 사용했는데
도움 많이 되었습니다 감사합니다
당곰
IP 211.♡.170.153
07-13 2020-07-13 09:53:05
·
이런걸 해보고 싶었는데... 아직 파이썬을 시작도 안했다능~ ^^;;;
열심히 공부해서 쫓아오겠습니다~ 우선 스크랩합니다. 감사합니다~
마티니원
IP 165.♡.83.210
07-13 2020-07-13 11:36:10
·
파이썬 공부 해야 하는데....
좋은 내용 감사합니다.
초마짬뽕
IP 221.♡.205.184
07-13 2020-07-13 19:19:16
·
스크래피도 좋은 것 같아요
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.