2010-10-07 57 views
2

我知道关于PHP网页刮板的问题已被问及时间和使用这个,我发现了SimpleHTMLDOM。在我的本地服务器上无缝工作之后,我将所有内容都上传到了我的在线服务器上,以便找出某些问题无法解决。快速浏览常见问题解答后,我会转到this。我目前正在使用免费托管服务,因此请编辑任何php.ini设置。所以使用FAQ的建议,我尝试使用cURL,只是发现这也是由我的托管服务关闭。是否还有其他简单的解决方案可以在不使用cURL或SimpleHTMLDOM的情况下删除另一个网页的内容?当cURL和allow_url_fopen被禁用时如何抓取网站

回答

4

如果cURLallow_url_fopen没有启用,你可以尝试获取通过内容

  • fsockopen - 打开Internet或Unix域套接字连接

换句话说,你所要做的HTTP请求手动。请参阅手册中的示例以了解如何执行GET请求。然后可以进一步处理返回的内容。如果套接字已启用,您还可以使用任何第三方lib来利用它们,例如Zend_Http_Client

在旁注中,查看Best Methods to Parse HTML以获得SimpleHTMLDom的替代方案。

+2

+1不知道你可以使用fsockopen,即使allow_url_fopen是不允许的。 – NikiC 2010-10-20 18:18:18

1

cURL是一种专业API。它不是通常制作的http库,而是FTP,SFTP,SCP,HTTP PUT,SMTP,TELNET等通用数据传输库。如果您只想使用HTTP,则有一个根据PEAR library for that。或者检查您的PHP版本是否启用了官方http extension。 刮刮试phpQueryquerypath。两者都带有内置http支持。

+0

我认为querypath使用DOM的加载工具和afaik,它们依赖于'allow_url_fopen'。另一方面,phpquery使用'Zend_Http_Client',这可能是一个选项。 PEAR图书馆也是一个很好的电话。这是'fsockopen'上的一个实现。 – Gordon 2010-10-07 11:01:39

-4

file_get_contents()是在不安装额外库的情况下抓取页面的最简单方法。

+0

这就是[与Martin的上述相同的答案](http://stackoverflow.com/questions/3880628/how-to-scrape-websites-when-curl-and-allow-url-fopen-is-disabled/3880979#3880979 )。除非你自己的答案增加了一些新的东西,否则鼓励你提高原始答案而不是重复它们(特别是当它们不适用于OP的问题时)。 – Gordon 2010-10-08 17:42:36

+0

file_get_contents()不是一个选项。 – user 2010-10-09 17:38:11

0

下面是在allow_url_fopen设置为false时抓取图像的一种简单方法,无需研究传统工具。

在您的开发环境中创建一个网页,加载您正在抓取的所有图像。然后您可以使用浏览器保存图像。 File -> "Save Page As"

如果您需要一次性解决方案从allow_url_fopen设置为0的远程服务器下载一堆图像,这很方便。

这对我工作后file_get_contentscurl失败。