Javascript 基于Web的应用程序&HTML解析
我正在开发一个基于web的应用程序,它通过调用加载URL的HTML内容,从而避免违反同源策略Javascript 基于Web的应用程序&HTML解析,javascript,python,html,parsing,Javascript,Python,Html,Parsing,我正在开发一个基于web的应用程序,它通过调用加载URL的HTML内容,从而避免违反同源策略 url = 'http://' + document.getElementById("urlText").value $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent(url) + '&callback=?', function(data){ var doc = new DOMParser().parseFro
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');
如果我需要从这个html字符串中提取有意义的可见文本,有没有一种方法可以像beautifulsoup在python中所做的那样做到这一点?我更像是javascript的初学者 看起来这就是你需要的?下面的代码使用whateverorigin.org网站解析google.nl并将其添加到div中。如果没有,请尝试解释您还需要什么 jQuery:
<div class="result"></div>
$(文档).ready(函数(){
$.getJSON('http://whateverorigin.org/get?url=“+encodeURIComponent('http://www.google.nl“)+”&回调=?”,函数(数据){
$('.result').html(data.contents);
});
});代码>
HTML:
<div class="result"></div>
示例:用于查找和覆盖适当的元素。然后您可以决定打印什么-例如:显示可见项的文本节点。
下面是一个JSFIDLE和一个工作脚本示例:
输出:
javascript:
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() );
}
});
});
var parser=new DOMParser();
var-doc;
var MeaningfulText=[];
$.getJSON('http://whateverorigin.org/get?url=“+encodeURIComponent('https://www.facebook.com“)+”&回调=?”,函数(数据){
doc=parser.parseFromString(data.contents,“text/html”);
var ELMS=$(doc.find(“div,p,a,span”);
ELMS.each(函数(索引、元素){
如果(element.style.display!=“无”&&&$(element.text()!=”){
$(“#outputText”).append('
'+element.tagName+'-'+$(element.text());
push($(元素).text());
}
});
});
非常感谢Jeffrey。我需要有意义的文本信息作为原始字符串。我碰巧看到css样式信息是有意义文本的一部分。有什么方法可以删除它们吗?我对照facebook和其他一些网站检查了我的代码,效果非常好。当我对照谷歌查看时,它显示了那些CSS代码(说它们位于span
标签中)。我不知道这是我的代码还是谷歌网站的问题。google.com
是您打算使用的网站吗?基于web的应用程序将从任何网站获取可见文本$(doc)查找(“p,a”);我做了这个改变。这似乎效果更好。