2016-06-24 5 views
0

웹 페이지에서 링크를 읽어야하는 webCrawler를 만들고 있습니다. 내가 웹 사이트를 열고 읽을 수있는 Python의 urllib2 라이브러리를 사용하고 있습니다.HTML 콘텐츠를 읽을 수 없습니다.

데이터를 가져올 수없는 웹 사이트를 발견했습니다. URL은 위의 코드, 나는 위에서 얻을 나는 브라우저에서 열면 내가 웹 사이트에서 얻을 내용과 컨텐츠를 실행하여 "http://www.biography.com/people/michael-jordan-9358066"

내 코드,

import urllib2 

response = urllib2.urlopen("http://www.biography.com/people/michael-jordan-9358066") 
print response.read() 

입니다 코드가 매우 다릅니다. 위 코드의 콘텐츠에는 데이터가 포함되어 있지 않습니다.

웹 페이지를 읽는 데 지연이있을 수 있다고 생각하여 지연을 도입했습니다. 지연 후에도 응답은 동일합니다.

response = urllib2.urlopen("http://www.biography.com/people/michael-jordan-9358066") 
time.sleep(20) 
print response.read() 

웹 페이지는 브라우저에서 완벽하게 열립니다.

그러나 위 코드는 Wikipedia 또는 일부 다른 웹 사이트를 읽는 데 적합합니다. 이상한 행동의 원인을 찾을 수 없습니다. 미리 감사드립니다.

+0

방문한 사이트가 http 헤더에서 User-Agent를 감지 한 것으로 보입니다. 그렇다면 User-Agent를 설정하면 제대로 작동합니다. – WKPlus

+0

아마 모든 데이터가 js에 의해로드되어 HTML 페이지에서 내용을 찾을 수 없다고 생각합니다. –

+0

@WKPlus : 사용자 에이전트를 firefox로 추가하려고 시도했지만 응답은 여전히 ​​동일합니다. – wh0

답변

3

겪고있는 현상은 대부분 dynamic web pages입니다. 이 페이지에는 urllib 또는 requests의 정적 콘텐츠가 없습니다. 데이터가 사이트에로드됩니다. 파이썬의 selenium을 사용하면이를 해결할 수 있습니다.

+0

정답입니다. 방금 페이지를 확인한 결과 전체 콘텐츠가 동적으로 생성되었습니다. –

+0

만약 당신이 어떤 URL을 자바 스크립트 데이터를로드하는 데 사용 알아낼 수 어쩌면 그냥 데이터를 가져올 그 URL을 열 수 있습니다, 내가 충분히 효율적으로 생각하지 셀레늄에 대한 필요가 없습니다. – WKPlus

관련 문제