如何在不进行渲染的情况下从网页中获取HTML文本


How do I get HTML text from a web page without having it rendered?

使用cURL或this。。。

$html = file_get_contents('http://stackoverflow.com/questions/ask');

获取网页,但它也将其渲染为普通网页,我只想要文本。

我将假设您只是在执行echo $html,并假设它以某种方式进行了渲染。事实并非如此。改为纯文本:

header("Content-Type: text/plain");
echo $html;

如果您所说的"rendered"是指"ASP.NET将页面渲染为HTML",那么不,您无法获得任意远程页面的来源。这将是一个相当大的安全风险。

Erm。。。CCD_ 2所做的就是获取文件的内容。它看起来只是"渲染"的HTML,因为您正在将它直接转储到输出流中。在输出之前,请尝试通过htmlspecialchars运行它。

我同意@Kolink的观点。这样的东西会起作用:

$html = htmlspecialchars(file_get_contents('http://stackoverflow.com/questions/ask'));

没有测试,虽然漂亮的知己!

"只是文本"是什么意思?是否要抓取html文件的文本内容?然后,您应该尝试解析文件,即使用simplehtmldom等工具过滤包含有趣内容的标签(查找"从html提取内容"选项卡)。或者编写自己的解析器,如果需要,使用php自己的strip_tag从内容中剥离剩余的标记。

相关文章: