我正在尝试使用this script从外部网站提取一些文字。
它完美无缺,但它可以获得整个页面。我想只使用类'content'的特定div中的内容。整个页面放在变量'data'中,然后创建此函数以去除一些标记:
function filterData(data){
data = data.replace(/<?\/body[^>]*>/g,'');
data = data.replace(/[\r|\n]+/g,'');
data = data.replace(/<--[\S\s]*?-->/g,'');
data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g,'');
data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g,'');
data = data.replace(/<script.*\/>/,'');
return data;
}
我如何使用“内容”类查找div并仅查看其中的内容?
更新:对于使用RegExes感到抱歉 - 您是否可以帮助我在不使用RegEx的情况下获取内容?所以,这是我的HTML文件:
<a href="http://www.eurest.dk/kantiner/228/all.asp?a=9" class="ajaxtrigger">erg</a>
<div id="target" style="width:200px;height:500px;"></div>
<div id="code" style="width:200px;height:200px;"></div>
<script src="http://code.jquery.com/jquery.min.js"></script>
<script>
$(document).ready(function(){
var container = $('#target');
$('.ajaxtrigger').click(function(){
doAjax($(this).attr('href'));
return false;
});
function doAjax(url){
if(url.match('^http')){
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
"q=select%20*%20from%20html%20where%20url%3D%22"+
encodeURIComponent(url)+
"%22&format=xml'&callback=?",
function(data){
if(data.results[0]){
var tree = string2dom(data.results[0]);
container.html($("div.content", tree.doc));tree.destroy();
} else {
var errormsg = '<p>Error: could not load the page.</p>';
container.html(errormsg);
}
}
);
} else {
$('#target').load(url);
}
}
function filterData(data){
return tree;
}
});
</script>
答案 0 :(得分:1)
尝试这样的事情:
var matches = data.match(/<div class="content">([^<]*)<\/div>/);
if (matches)
return matches[1]; // div content
答案 1 :(得分:0)
这里试试这个:
<div[^>]*?class='content'[^>]*?>(.*?)</div>
捕获的参考/ 1将包含您的内容。虽然不应该使用正则表达式执行此操作:)
答案 2 :(得分:0)
这可能会对您有所帮助:
var divtxt = match(/<div[^>]*class="content"[^>]>.*<\/div>/);
但它可能会停在错误的位置。
你应该使用jquery或prototype来使它成为一个dom-object并使用选择器来找到正确的div。 使用jquery你会做类似的事情:
var divtxt = $(data).find(".content").first().html();
记得首先加载jquery库。
答案 3 :(得分:0)
试试这个:
<div\b[^>]*class="content"[^>]*>([\s\S]*?)<\/div>