2009-06-15 3 views
4

다른 HTML 페이지에 웹 사이트의 섹션 만 삽입하는 방법이 있습니까?다른 사이트의 HTML 섹션을 포함 시키시겠습니까?

예 : 블로그에 대한 답변을 볼 수 있으므로 HTML 콘텐츠를 가져 와서 어딘가에 표시하고 그 내용을 stackoverflow와 같은 스타일로 표시합니다. 기본적으로, 나는 원래 스타일링으로 페이지의 섹션을 인용 부호로 묶고 싶습니다. 그 자체가 사이트 자체가 제공해야하는 것입니까, 아니면 iframe을 사용하여 특정 요소 나 미친 것만 표시하도록 말할 수 있습니까? 모든 옵션을 열어 놓았지만 이미지가 아닌 HTML로 표시하고 싶습니다 (이것이 최후의 수단입니다).

이것이 가능하다면 알고 있어야 할 보안 문제가 있습니까?

답변

7

이미지가 실제로 최후의 수단이라고 생각하지 마십시오. 소스 페이지의 HTML/CSS를 제어 할 수는 없으므로 (아마도 자바 스크립트를 사용하여 원하는 스 니펫을 구문 분석하여) 솔루션을 만들더라도 내일 사이트에서 레이아웃을 변경하지 않을 것이라는 보장이 없습니다.

stackoverflow.com의 레이아웃을 제어 할 수있는 Jeff조차도 콘텐츠를 실시간으로 가져 오기보다는 screen-capture 사이트를 선호합니다.

이제 콘텐츠가 자동 업데이트되도록하는 것이 목표라면 다른 이야기가 될 것입니다. 그러나 RSS와 같이 내용을 공유하는 합의 된 방법을 사용하지 않으면 솔루션이 매우 약해집니다.

+0

이미지에는 해킹이없는 html 지원, 전체 보안 및 대상 사이트의 대역폭 제한이 없기 때문에 이점을 누릴 수 있습니다. – annakata

0

IE8의 웹 조각이 완벽 할 것 같은데. 그러나 IE8에서만 사용할 수 있으며, 원산지 사이트에서는이를 활용할 수 있도록 구현해야합니다.

1

파이썬에서 서버 측 솔루션을 사용하는 것이 좋습니다. urllib2를 사용하여 페이지를 요청한 다음 BeautifulSoup을 사용하여 필요한 비트를 파싱합니다. BeautifulSoup로 당신이 관심있는 부분에 대한 추론을 정교하게 할 수있는 매우 유연한 선택 API를 가지고

는 설명하기 위해 :.

soup = BeautifulSoup(html) 
text = soup.find(text="Some text on the page that is unlikely to change") 
print soup.parent.prettify() 

웹 마스터가 나중에 페이지의 마크 업을 변경하는 경우 그 방법, 당신 스크래핑 스크립트는 여전히 작동해야합니다.

2

당신이 묘사하는 개념은 대략 "보라색 포함"또는 "혼란"이라고 불리는 개념입니다. 그곳에는 도서관이 있지만 정확하게 개발되지는 않았습니다. 여기에 한 쌍의 ajaxianarticles가 있습니다.

1

클라이언트 측에서는 이 유일한 실용적인 옵션입니다. 그것을 스크롤하는 것은 가능하지만 장기간에 작동하지 않을 수 있습니다. 기술적으로 clickjacking 공격에 가깝기 때문입니다.

크로스 사이트 XHR도 있지만 대상 사이트에서 옵트 인 (opt-in)해야하며 최근 몇 몇 최신 브라우저에서만 작동합니다.

서버 측에서 HTML을 가져 오는 것은 쉽습니다 (모든 적절한 웹 프레임 워크는 페이지를 다운로드하고 HTML을 파싱 할 수 있으며 XPath/XSLT 또는 DOM을 사용하여 원하는 비트를 추출 할 수 있습니다).

그러나 스타일을 얻는 것은 까다로울 것입니다. CSS 규칙은 컨텍스트에서 가져온 HTML 조각과 함께 작동하지 않을 수 있습니다. CSS를 파싱하고 규칙을 추출 및 변환하거나 브라우저를 사용하고 모든 노드의 currentStyle을 읽어야합니다.

분명히 XSS를 피하기 위해 HTML을 많이 필터링해야합니다. 그것은 생각보다 어렵습니다.

이 작업을 자동화 할 필요가없는 경우 좋은 HTML + CSS WYSIWYG 편집기에서 스타일을 사용하여 콘텐츠 조각을 추출 할 수 있습니다.

관련 문제