2012-01-12 4 views
4

로 html로 저장 난 그냥 파이어 폭스의 북마크로 코드를 저장할 HTML 페이지는 : 텍스트

javascript:h=document.getElementsByTagName('html')[0].innerHTML;function%20disp(h){h=h.replace(/</g,%20'\n&lt;');h=h.replace(/>/g,'&gt;');document.getElementsByTagName('body')[0].innerHTML='<pre>&lt;html&gt;'+h.replace(/(\n|\r)+/g,'\n')+'&lt;/html&gt;</pre>';}void(disp(h)); 

의 소스 코드를 보여 자바 스크립트 코드가 있습니다. 따라서 웹 페이지를로드 한 후 책갈피에서 코드를 선택하면 소스 코드가 표시됩니다.

이제 파이썬을 사용하여 html 파일을 저장하려고합니다.

from BeautifulSoup import BeautifulSoup 
from BeautifulSoup import BeautifulStoneSoup 
import BeautifulSoup 

import urllib2 
from BeautifulSoup import BeautifulSoup 

page = urllib2.urlopen("http://www.doctorisin.net/") 
soup = BeautifulSoup(page) 
print soup.prettify() 
fp = open('file.txt','wb') 
fp.write(soup.prettify()) 

그러나 자바 스크립트 코드에있는 모든 콘텐츠가 포함되지는 않습니다. 저장된 파일과 자바 스크립트 쇼 소스 파일이 동일하지 않습니다. 어쩌면 파이썬 코드는 HTML 페이지에서 모든 코드 (javascript/css 태그 코드)를 얻지 못합니다. 문제가 무엇입니까? 내가 뭐 잘못하고 있니?

당신에게 내 문제의 예로서

편집을 할

, http://phpjunkyard.com/tutorials/cut-paste-code.php (임의의 사이트)로 이동 감사합니다 도움이 필요하십니까 이 사이트에 마우스 오른쪽 버튼으로 클릭하고보기 페이지 소스 (firefox)를 선택하여 소스를 복사하고 텍스트 파일에 저장하십시오. 이제 페이지를 저장하십시오 (페이지를 다른 이름으로 저장). 둘 다 동일하지 않다는 것을 알 수 있습니다. 저장된 페이지 (다른 이름으로 저장)에는 더 많은 것이 있습니다. 파이썬은 소스 코드와 같은 출력을 제공합니다 (페이지 소스보기). 어떤 스크립트, 양식 등이 누락되었습니다.

+0

이것은 BeautifulSoup 질문처럼 보입니다. 우분투 질문이 아닙니다. 원본을 텍스트로 저장하려고하는 것이 아니라 소스를 저장하기 전에 일부 코드를 사용하여 소스를 수정하는 것입니다. 소스를 저장하려면 선택한 브라우저에서 마우스 오른쪽 단추를 클릭하면 쉽게 저장할 수 있습니다. – Wolfger

+0

BeautifulSoup에서 JavaScript를 렌더링하는 이유는 무엇입니까? – theta

+0

또한 왜 코드 스 니펫에 중복 된 가져 오기가 있습니까? – theta

답변

4

웹 서버가 제공하는 정확한 HTML을 저장하려면 BeautifulSoup (HTML 구문 분석기이므로 미리 미리 인쇄 할 때 코드가 수정 될 수 있음)을 사용하지 마십시오. 기본적으로

import urllib2 
file("my_file.txt", "w").write(urllib2.urlopen("http://www.doctorisin.net/").read()) 

파이어 폭스는 HTML뿐만 아니라 (CSS와 스크립트 포함) 페이지를 표시하는 데 필요한 파일뿐만 아니라 저장이 더 나은 솔루션이 될 것입니다.

+0

감사합니다. 나는 이미 이것을 시도했다. 편집 된 게시물을 참조하십시오. 나는 나의 문제를 예를 들어 설명했다. – shantanu

1

정적 웹 페이지와 동적 웹 페이지의 차이점을 확인하십시오.

정적 웹 페이지와 달리 동적 웹 페이지는로드 할 때 기본 html을 수정할 수 있습니다. Javascript는 브라우저가 만든 수정 된 DOM에 대한 액세스 권한을 가지고 있기 때문에로드 된 페이지의 전체 HTML을 덤프 할 수 있습니다.

대조적으로 동일한 웹 페이지가 서버에서 다운로드되어 BeautifulSoup으로 직접 공급되는 경우 정적 웹 페이지로만 구문 분석 할 수 있습니다. 전체 동적 컨텐츠를 얻으려면 먼저 브라우저 (또는 동등한 버전)로 페이지를 처리해야합니다.

관련 문제