PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2020/06/13 11:02:25
Name 지구사랑
Subject [질문] Python Web Crawling 질문 드립니다.
화면으로 보이는데, html source를 잡지 못하는 경우 어떻게 해야 하나요?

크롬에서 F12 를 눌렀을 때, 우클릭/검사를 하면 원하는 source가 보이는데,
requests.get()으로 해당 source가 잡히지 않고,
selenium으로도 driver.get_screenshot_as_file()을 해 보면 보이는 대로 제대로 저장이 되는데,
막상 driver.page_source 를 읽어보면 크롬 F12 의 우클릭/검사에서 보이는 source를 볼 수 없습니다.

알면 쉬운 것 같은데, 관련 전공자가 아니라서 참 어렵네요.
Python/ Web Crawling 고수님들의 꿀팁을 부탁 드립니다.

PS) F12 의 우클릭/검사로도 보이지 않는 것에 대해서는 어떤 것을 공부해야 하는지도 부탁 드립니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
심플맨
20/06/13 12:13
수정 아이콘
안녕하세요.
웹페이지는 크게 서버에서 렌더링하는 방식과 브라우저에서 렌더링하는 방식 두가지가 있습니다.
(렌더링이라는 용어가 적절한지 모르겠습니다. 적당히 봐주세요.)
전자는 말씀하시는 source를 서버에서 미리 렌더링해서 텍스트형태로 보내주는 것이고,
후자는 서버에서 렌더링하지 않고 javascript라는 스크립트를 클라이언트에게 보내주면 클라이언트에서 스크립트 파일을 실행하여 source로 변환시키는 렌더링 작업을 합니다. 그러니깐 후자는 브라우저에서 추가적인 작업을 통해서 source를 생성한다고 생각하시면됩니다.
후자와 같은 방식으로 구성된 웹페이지를 일반적인 크롤링 방식으로 크롤링하는 경우(작성자분께서 사용하는 방식), 브라우저를 사용하지 않기 때문에, 스크립트파일을 soruce 형태로 렌더링하는 작업을 거치지 않게 됩니다. 말씀하시는 셀레니움이나 크롬에서는 정상적으로 나타나는 것은 브라우저 기반이기 때문에 렌더링 작업을 거쳐서 소스를 생성하기 떄문입니다.

해결책은 브라우저를 이용하여 크롤링하는 것입니다.
셀레니움을 이용해서 크롤링하셔도 되고, 다른 패키지들도 있을겁니다.
찾아보시고 해당 방법으로 렌더링 후에 크롤링하시길 바랍니다.
지구사랑
20/06/13 12:42
수정 아이콘
(수정됨) 답변에 감사를 드립니다.
쉽지 않네요. :)
20/06/14 00:46
수정 아이콘
서버 source 로드 -> js 실행 -> 최종 html 이렇게 됩니다.
즉 js 실행 될 시간을 기다려줘야 해서 selenium driver로 wait 같은걸 걸어주면 될겁니다.
지구사랑
20/06/14 08:24
수정 아이콘
Selenium을 사용하고, 말씀하신 것과 비슷하게 지연시켜 일단 원하는 것은 구했습니다.
그래도 아직 전체적으로 시원하게 해결된 느낌은 아니어서^^;;; 조금 더 공부해야 할 듯 합니다.
답변에 감사를 드립니다.
세크리
20/06/14 06:35
수정 아이콘
크롬에서 F12말고 view page source 클릭하면 javascript처리 전에 소스를 볼 수 있습니다. 처리 하고 난 후의 소스 crawling은 사실 표준적인 방법은 없고요 (자바스크립트에서 클라이언트를 확인 가능하기 때문에 대상이 crawler면 그냥 렌더링을 안하는것도 가능합니다), 해 보면서 되는 수단을 써야 합니다. 간단한게는 같은 웹 사이트를 javascript를 꺼보고 접속한 다음 호환되는 contents 렌더링 방식이 있는지를 보고, 맞춰가는 방법도 있습니다. 아직 웹 표준에서는 javascript가 사용 불가능한 환경 (cli거나 임베디드같은 환경)을 위해서 html로만으로 이루어진 대체 정보를 화면에 뛰울것을 요청하고 있습니다. 따라서 웹 표준을 따르는 페이지라면, javascript없이도 뭔가 정보를 주긴 해야합니다.
지구사랑
20/06/14 08:39
수정 아이콘
답변에 감사를 드립니다.
그렇지 않아도 F12 와 view page source의 차이에 대해 궁금했었습니다.
Urlopen과 requests와 selenium을 비교하고 있는데, 말씀하신 것처럼 표준적이고 쉬운 해결책은 없는 것 같네요.
클라이언트를 어떻게 확인하는지, 그것을 어떻게 속이는지, 공방을 조금 구경하니, 쌩초보의 영역도 아니구요. ^^;;;
그래도 알아가는 재미가 생겼습니다. :)
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
공지 댓글잠금 [질문] 통합 규정(2019.11.8. 개정) jjohny=쿠마 19/11/08 114082
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [10] 유스티스 18/05/08 137145
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 187379
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 220682
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 273281
182042 [질문] 먹는 음식이랑 여드름이랑 관계가 정말 없나요? [3] K-1498 25/10/30 498
182041 [질문] 서울 잘 가지도 않는데 외국 친구랑 저녁 먹을 식당 찾으려 합니다. [3] 어센틱938 25/10/29 938
182040 [삭제예정] 논현 - 신논현 소개팅 할만한 곳 추천좀 부탁드려요 [2] 시은902 25/10/29 902
182039 [질문] 스마트폰 키보드 입력오류 질문 (pgr에서만 발생) [3] 짱구1206 25/10/29 1206
182038 [질문] 11월에 2박3일로 대만가족여행(4인) 가는데 여행 일정 추천 부탁드립니다. [6] 파쿠만사1520 25/10/29 1520
182037 [질문] 미국캐나다 유학 성공 = 미국 캐나다 취업 = 이민 공식은 어떻게 만들어진 건가요? [2] 깐부1407 25/10/29 1407
182036 [질문] 전기 차단기가 내려가는데 좀 타이밍이 특이합니다 [5] 밥과글959 25/10/29 959
182035 [질문] 10개월된 아기랑 갈만한 분위기 좋은 레스토랑 추천 [6] 호루라기장인1086 25/10/29 1086
182034 [질문] 전세계적으로 수도권 인구는 줄고 그 주변 인구가 는다던데 이유가 뭘까요? [13] 이게무슨소리1978 25/10/29 1978
182033 [질문] 뉴욕 단기 여행(1박2일 같은 2박3일) 코스 추천좀 부탁해요 [18] 키키모하1051 25/10/29 1051
182032 [질문] 주식투자 관련 문의(ISA, 연금저축) [12] 모챠렐라1243 25/10/29 1243
182031 [질문] 차알못입니다. 전기차 자율주행관련 질문드립니다 [20] 플리퍼1338 25/10/29 1338
182030 [질문] 영어공부용 앱 추천하시는게 있을까요? [1] Karolin855 25/10/29 855
182029 [질문] 모비노기 왕초보 질문 [5] 망나뇽1599 25/10/28 1599
182028 [질문] 스타렉스 대리운전 [3] Cherish2036 25/10/28 2036
182027 [질문] 볼4개를 안던지고, 고의사구를 하는 이유는... [29] 마르키아르3364 25/10/28 3364
182026 [질문] 부모님댁 안방 서브 테레비 추천 부탁드립니다. [1] 플래쉬1597 25/10/28 1597
182025 [질문] 겨울철 전기 스토브 추천 부탁 드립니다. [1] 자가타이칸1657 25/10/28 1657
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로