2014-11-28 1 views
2
내가한다면 이것은 동일한 원본 정책 위반

웹 기반 응용 프로그램 - HTML 구문 분석

url = 'http://' + document.getElementById("urlText").value 
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent(url) + '&callback=?', function(data){ 
var doc = new DOMParser().parseFromString(data.contents, 'text/html'); 

을 피할 수 http://www.whateverorigin.org/에 수행 된 호출을 사용하여 URL의 HTML 콘텐츠를로드하는 웹 기반 applcation, 일하고 있어요

이 html 문자열에서 의미있는 텍스트를 추출해야 할 필요가 있습니다. 내가 할 수있는 방법이 prettysoup이 파이썬에서하는 것처럼 할 수 있습니까? 나는 자바 스크립트의 초보자이다.

답변

0

필요한 것 같습니다. 아래 코드는 whateverorigin.org 웹 사이트에서 google.nl을 파싱하여 div에 추가합니다. 그렇지 않다면 더 필요한 것을 설명하십시오!

jQuery를 :

$(document).ready(function() { $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://www.google.nl') + '&callback=?', function(data){ $('.result').html(data.contents); }); });

HTML :

<div class="result"></div> 

예 : http://jsfiddle.net/qddekhnc/1/

+0

고마워 제프리. 의미있는 텍스트 정보가 원시 문자열로 필요합니다. –

1

사용 jQuery 찾기 위해 이상 iterate에서 적절한 요소. 그런 다음 표시 할 항목을 결정할 수 있습니다 (예 : 보이는 항목의 텍스트 노드 표시). 다음은 작업 스크립트 예제와 jsfiddle입니다 : http://jsfiddle.net/w147o9f6/1/

<body> 
    <div id="outputTexts">OUTPUT:</div> 
</body> 

자바 스크립트 :

var parser = new DOMParser(); 
var doc; 
var meaningfulTexts = []; 
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('https://www.facebook.com') + '&callback=?', function(data){ 
    doc = parser.parseFromString(data.contents, "text/html"); 

    var ELMS = $(doc).find("div, p, a, span"); 
    ELMS.each(function(index, element) { 
     if(element.style.display != "none" && $(element).text() != "") { 
      $("#outputTexts").append('<br>'+ element.tagName + ' - '+$(element).text()); 
      meaningfulTexts.push($(element).text()); 
     } 
    }); 
}); 
+0

CSS 스타일링 정보가 의미있는 텍스트의 일부로 보입니다. 내가 그들을 제거 할 수있는 방법이 있습니까? –

+0

페이스 북 및 일부 다른 웹 사이트에 대한 코드를 확인한 결과 매우 효과적이었습니다. Google과 비교해 보았을 때 CSS 코드 ('span'태그 안에 앉아 있음)를 보여주었습니다. 내 코드 또는 구글의 사이트에 문제가 있는지 나는 모른다. 'google.com'은 당신이 함께 할 웹 사이트입니까? –

+0

웹 기반 응용 프로그램은 모든 사이트에서 보이는 텍스트를 가져 오는 것입니다. $ (doc) .find ("p, a"); 나는이 변화를 만들었다. 이것은 더 잘 작동하는 것처럼 보였다. –