2016-09-03 2 views
0

내가 긁어 모으려고하는 웹 사이트의 홈페이지에는 4 개의 탭이 있으며, 그 중 하나는 "[번호] 가능한 작업"입니다. [Number] 값을 긁는 데 관심이 있습니다. Chrome에서 페이지를 검사 할 때 <span> 태그로 묶인 값을 볼 수 있습니다.다이내믹을로드하는 페이지에서 값을 긁는 방법은 무엇입니까?

enter image description here

그러나, 내가 직접 페이지 소스를 볼 때 그 <span> 태그 안에 아무것도 없다. 파이썬 requests 모듈을 사용하여 HTTP GET 요청을 한 다음 regex를 사용하여 반환 된 내용의 값을 캡처 할 계획이었습니다. 콘텐츠에 필요한 번호가 포함되어 있지 않으면 분명히 불가능합니다.

내 질문은 : 여기에 무슨 일이 일어나고 무엇

  1. ? 값을 페이지에 동적으로로드하여 표시 한 다음 HTML 소스에 표시하지 않으려면 어떻게해야합니까?

  2. 페이지 소스에 값이 표시되지 않으면 어떻게하면 에 연결할 수 있습니까? 당신이 DOM 요소를 얻을 때 아약스로드 이유

+0

셀렌을 사용할 수 있습니다. https://pypi.python.org/pypi/selenium – Javier

답변

0

1.A 값이 동적으로 Ajax를로드 할 수 있습니다, 아약스로드 비동기식이 아약스를 렌더링 할 수 있도록 사이트의 나머지 부분은 대기하지 않음을 의미, 그건 그 안에 나타나지 않습니다. 당신은 셀레늄을 사용해야합니다

2.For 긁어 동적 콘텐츠, here a tutorial

2

내용은 다음 아마 자바 스크립트를 사용하여 생성 된 페이지 소스에 나타나지 않는 경우. 예를 들어 사이트에는 작업을 나열하는 REST API가있을 수 있으며 Javascript 코드는 API에서 작업을 요청하여이를 사용하여 DOM에 노드를 만들고이를 사용 가능한 작업에 연결할 수 있습니다. 그것은 단지 하나의 가능성 일뿐입니다.

이 정보를 스크랩하는 한 가지 방법은 자바 스크립트가 작동하는 방식을 알아 내고 파이썬 스크래퍼를 똑같은 방식으로 만드는 것입니다 (예를 들어, 사용중인 간단한 REST API가있는 경우, 같은 URL). 흔히 그렇게 쉬운 일이 아니므로 다른 대안은 셀레늄과 같은 자바 스크립트 가능 브라우저를 사용하여 근근이 살아가는 것입니다.

제가 언급하고자하는 마지막 한 가지는 that regular expressions are a fragile way to parse HTML입니다. 일반적으로 BeautifulSoup와 같은 라이브러리를 사용하는 것이 좋습니다.

0
  1. 동적으로로드되는 데이터의 경우 네트워크에서 xhr 요청을 찾아야하며 해당 데이터가 생산적일지도 모른다면 !!
  2. 당신은 환상적인 js 일 수 있습니다.이 브라우저는 헤드리스 브라우저이며 동적으로로드 된 내용으로 해당 페이지의 HTML을 캡처합니다.
관련 문제