파이썬 웹 크롤러는 변경되지 않은 URL _ 아약스 동적 페이지의 로딩 페이지를 크롤링 할 때

1. AJAX는 무엇입니까?

AJAX = 비동기 자바 스크립트와 XML.

AJAX는 빠른 동적 웹 페이지를 만들기위한 기술이다.

뒤에서 서버와 적은 양의 데이터를 교환함으로써, AJAX 비동기 페이지 업데이트를 할 수 있습니다. 이 수단은 그 페이지의 특정 부분에 대한 전체 페이지를 다시로드하지 않고 업데이트 할 수 있습니다.

기존의 웹 페이지 (AJAX를 사용하지 않음)는 전체 페이지 표면의 콘텐츠를 업데이트해야하는 경우, 필수는 오버로드되었습니다.

일반적으로 사용되는 여러 아약스 장면.

예를 들어, 당신은 당신이 페이지를 새로 고침하지 않은, 산책 거의 알고,하지만 당신은 항상 사용자 또는 주제에 대한 우려가 새로운 동적 메시지 프롬프트를 가지고 볼 수 있습니다.

또한, 우리는 비디오를 볼 때 예를 들어, 당신은 코멘트를 아래에 완전히 완전히로드 나오지이 볼 수 있습니다,하지만 당신은 약간 아래로 드래그, 그것은 당신에게로드 조금을 제공합니다.

왜 사용 아약스를 할까?

위의 시나리오에서 당신은, 그 장점을 찾을 수 있어야합니다

먼저, 사용자의 동작을 방해하지 않고 달성 할 수있는 전체 페이지 새로 고침을 다시로드하지 않고, 사용자와의 상호 작용을 촉진합니다. 당신은 프로그래머가 그것의 개체를 찾을 방법을 찾고,이 시간이 메시지를 밀어, 전체 페이지가 새로 고쳐, 당신은 당신이 가스 가스를하지 않는 말을한다!

두 번째는, 또는 당신은 프로그래머가 개체를 찾을 방법을 찾고있다,하지만 이번에는 상황이 좋은 의사 소통이 아니다. 로드 답은 나오지 않고, 대답은 더 서둘러 서둘러하지 말로드 나오지 않는 카드의 빈 페이지! 약간, 당신이 나를보고 후 조용히 문제를 해결하는 다른 데이터를하지 않을로드 할 때, 몇 가지 답변을 살펴 보자? 그냥 토큰을 먹고, 당신은 요리 테이블, 요리가 가득 잘 당신을 주는가 주문? 확실히 그래, 하나 좋은 일이 그 것이었다.

셋째, 아약스 데이터는 상대적으로 작은 크기에서 서버에서 전송. 브라우저는 브라우저 클라이언트가 작업의 일부를 가정하므로, 따라서 서버의 압력을 감소, 그것을 렌더링하는 방법을 알고 있습니다.

아약스 기술이 핵심이다 의 XMLHttpRequest 객체 (줄여서 XHR), 당신은 데이터 서버에 XHR 객체를 사용하여 얻을 수 있습니다, 다음 DOM을 통해 페이지 렌더링에 데이터를 삽입 할 수 있습니다. 이름이 XML에 포함되어 있지만 관계없이 데이터 형식의 아약스 통신 있지만, 그래서 우리는 XML 또는 JSON 형식과 같은 데이터 형식이 될 수 있습니다.

백그라운드에서 서버와 데이터를 교환 XMLHttpRequest의 목적, 구체적인 효과는 다음과 같습니다 :

  • 페이지를 다시로드하지 않고 업데이트 페이지
  • 페이지가로드 된 후 서버에서 데이터 요청
  • 페이지가로드 된 후 서버에서 데이터를 수신
  • 백그라운드에서 서버로 데이터를 보내기

 

2. Ajax는 파충류에 어떤 영향을?

또는 위의 시나리오에 해당하는, 나는 확실히 파충류에게 전체 데이터를 크롤링 할 것이다. 그러나 일단 당신은 나에게 개체를 찾을 수있는 두 가지 방법을 가르쳤다. 나는 전체가 몇 스크립트는 데이터가 완전하고 포괄적 충분히 가지고하지 않는 것이가있는 경우, 충분하지 않습니다 판단. 그러나 브라우저를 슬라이딩하지, 데이터는 어떻게 할 나오지 않는다?

더 구덩이 아버지, 우리 나라의 브라우저에 의해 렌더링되는 데이터 중 아약스로드가 무엇인지, 소스 코드는 우리가 원하는 데이터를 찾을 수 없습니다. 부어 그런 짓을! 브라우저를로드하는 방법을 알고, 우리는 그것을 몰라!

 

3. 어떻게 크롤링 페이지 등 아약스 동적 로딩.

1. 셀레늄 + PhantomJs

PhantomJS 무료 인터페이스는 웹킷 브라우저 엔진을 스크립팅 할 수 있습니다. DOM 조작, CSS 선택기, JSON, 캔버스 및 SVG : 그것은 웹 표준의 다양한 기본 지원합니다. 의 역할은 유사하며 브라우저는 페이지의 js 치료를 렌더링 할 수 있습니다.

그것은 무엇 셀레늄입니까? 그것은 테스트 자동화 도구 수 있었다, 그러나 파충류는 다양한 사용자 아의 다양합니다. 이 코드를 브라우저에서 작동 할 수있는 도구입니다. 예를 들어, 브라우저의 감소 등을 제어 할 수 있습니다. 그러나 나는 그것에 대해 알아하기 전에, 아주 익숙하지 않다.

그러나, 나는이 방법을 사용하지 않았다. 왜 느린 때문이다. 브라우저가 노래 많은, 많은 시간을 추가 운영하지 않으며, 그들은 더 좋은 방법이 아니다.

자신을 발견합니다, 실제 요청을 찾을 수 있습니다.

한 데이터를 통해 전송 될 때, 서버가 보낸 요청은 확실히이다. 우리는 실제 요청이 전송 된 페이지를로드 조용히을 찾아야합니다.

 

상대 예 : 크롤링 비행 정보 항주 소산 공항 날.

 

1) 그래서 아약스 기술의 사용 추측보기 페이지 소스 코드를 마우스 오른쪽 버튼으로 클릭하고 "더보기"에 나오는 어떤 비행 정보 후 페이지의 소스 코드를 그 클릭을 발견했다. Wireshark를 통해 먼저 패키지를 잡아.

전송 2. 봐 의 XMLHttpRequest 개체 매개 변수. 카메라 서버는 데이터 전송을 선택하는 p 값에 기초한다.

 

 

JSON 형식 감지 : http://www.bejson.com/

原文链接:https://zhuanlan.zhihu.com/p/27346009

추천

출처www.cnblogs.com/NiBosS/p/12088651.html