php - 使用 PHP 从 url.jsonp 获取文本

标签 php

我正在尝试从此网页获取纯文本: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&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 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/

相关文章:

PHP $_SESSION 是服务器端还是本地?

php - 使用 PHP 更改/编辑标签

php - 从mysql获取数据并绘制图表

php - 以编程方式检查 MySQL 的选项值(key_buffer_size、innodb_buffer_pool_size 等)

php - 使用 php 和 jQuery 将多个数组值放入数据库

php - mySQL查询昨天的最大时间戳

javascript - 如何在 Ajax 中传递动态 html 行的数据?

php - 如何从 Codeigniter 4 中的 url 中删除 public/index.php/

php - 访问者模式对动态类型语言有用吗?

php - 电子邮件正文 php 中的 array_chunk