gpt4 book ai didi

jQuery:如何从页面获取文本?

转载 作者:行者123 更新时间:2023-12-01 02:46:52 26 4
gpt4 key购买 nike

我需要从任意网页中提取文本(仅纯文本)(我确实使用服务器上的简单 php 代理绕过了跨域问题)。我像往常一样,

$.get(url, function(data) {
process(data);
});

并且,在我的 process() 函数中,我拥有页面的内容。我想考虑该页面中的特定 div(此处为“#my-div”),或者,如果不存在 - 作为后备 - 整个正文。

我想做这样的事情:

function process(content) {
if ($(content).find('#my-div'))
$('#output').text($(content).find('#my-div').text());
else
$('#output').text($(content).find('body').text());
}

但我总是打赌在“查找”“body”时会得到一个空结果:有什么建议吗?

最佳答案

一些问题...

function process(content) {
// The if() will always be true, because a jQuery object is always retruend
if ($(content).find('#my-div'))
$('#output') = $(content).find('#my-div').text(); // invalid assignment
else
$('#output') = $(content).find('body').text(); // invalid assignment
}

已修复...

function process(content) {
var nodes = $(content); // cache the elements
if (nodes.find('#my-div').length)
$('#output').text(nodes.find('#my-div').text());
else
$('#output').text(nodes.find('body').text());
}
<小时/>

现在理论上它似乎可以工作,但是将整个 HTML 文档传递到 $ 存在问题。功能。您会发现某些浏览器会删除某些元素,例如 <head><body> .

您最终需要对每种情况进行测试,例如这样......

function process(content) {
var nodes = $(content); // cache the elements
var my_div = nodes.find('#my-div'); // try to get nested #my-div

if( !my_div.length ) {
my_div = nodes.filter('#my-div'); // try to get #my-div at top level

if( !my_div.length ) {
my_div = nodes.find('body') // try to get nested body

if( !my_div.length ) {
my_div = nodes; // assume the body content is at the top level
}
}
}
$('#output').text(my_div.text());
}

关于jQuery:如何从页面获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com