2017-09-16 70 views
2

我试图从该网页获得的纯文本:https://html2-f.scribdassets.com/55ssxtbbb45pk2eg/pages/319-42c28ee981.jsonp 其中经检查是一个回调函数,插入HTML。我试图抓取页面并将文本格式化为全面,并实际显示HTML而不是纯文本。获得来自url.jsonp文本与PHP

PHP:

回波的file_get_contents( “https://html2-f.scribdassets.com/55ssxtbbb45pk2eg/pages/319-42c28ee981.jsonp”);

返回的文本是一个完整的混乱

X321-5db7e88872.jsonpY]n6EıH,E @ BPM %F#KH}; Z:例如,“E:@EjXޖDJ $ & $〜> A8#pӥyX8r(#kZ85jA%Ȇ...

而它应该看起来像这样:

"<div class=\"newpage\" id=\"page319\" style=\"width: 902px; height:1167px\">\n<div class=text_layer style=\"z-index:2\"><div class=ie_fix>\n&nbsp;\n<div class=\"ff81\" style=\"font-size:114px\">\n<span class=a style=\"left:331px;top:75px;color:#ffffff\">1<span class=w9></span>3</span></div>...

尽管我可以手动将文本从网页复制/粘贴到文本编辑器中以备将来使用,但我想要消除此步骤,因为我需要为320页进行此操作。

有一些变通方法.jsonp网址吗?或者是由服务器加密的数据? (我不知道)

回答

2

的响应gzip压缩。你可以在响应头文件中看到它:

Content-Encoding: gzip 

所以,你需要解压缩它。您可以通过改变整个方法并使用cURL或使用stream wrapper compress.zlib://来做到这一点。只需在网址中加上:

echo file_get_contents("compress.zlib://https://html2-f.scribdassets.com/55ssxtbbb45pk2eg/pages/319-42c28ee981.jsonp"); 

这将为您提供正确的响应。注意,这仍然是一个JSONP响应,所以它是以回调的形式。你需要决定如何处理它。

+0

哇非常感谢你这一点。它工作100%,并返回我需要的文字。我实际上并不会使用回调函数,而只是在解析回调中的数据。再一次感谢你。 – zack

+0

兄弟没问题。很高兴你能得到它的工作。 – ishegg