我正在尝试从此网页获取纯文本:https://html2-f.scribdassets.com/55ssxtbbb45pk2eg/pages/319-42c28ee981.jsonp 经检查,这是一个插入 HTML 的回调函数。我正在尝试抓取页面并将文本重新格式化为全面,并实际显示 HTML 而不是纯文本。
PHP:
echo file_get_contents("https://html2-f.scribdassets.com/55ssxtbbb45pk2eg/pages/319-42c28ee981.jsonp ");
返回的文本一团糟
����X321-5db7e88872.jsonp�Y]n�6���E�ıH�;��E�@���b�PM��%�f#K�H��}� ;z����:�eG"e��:@�E����j��X��dJ����$�&$~����>a�8#��p�٥y��X ��8�r��(#kZ���85�j�A�%����������...
而它应该看起来像这样:
"<div class=\"newpage\" id=\"page319\" style=\"width: 902px; height:1167px\">\n<div class=text_layer style=\"z-index:2\"><div class=ie_fix>\n \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 url 的解决办法?还是服务器对数据进行了加密? (我只是不知道)
最佳答案
响应经过 gzip 压缩。您可以在响应 header 中看到它:
Content-Encoding: gzip
所以,你需要解压它。您可以更改整个方法并使用 cURL,或者使用 stream wrapper compress.zlib://
来执行此操作。 。只需将其添加到 URL 前面即可:
echo file_get_contents("compress.zlib://https://html2-f.scribdassets.com/55ssxtbbb45pk2eg/pages/319-42c28ee981.jsonp");
这会给你正确的回应。请注意,这仍然是一个 JSONP 响应,因此它采用回调的形式。您需要决定如何处理它。
关于php - 使用 PHP 从 url.jsonp 获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257327/