如何在禁用cURL和allow_url_fopen时抓取网站

时间:2010-10-07 10:12:25

标签: php web-scraping

我知道关于PHP网页抓取工具的问题已经被问到时间和时间,并且使用了这个,我发现了SimpleHTMLDOM。在我的本地服务器上无缝工作后,我将所有内容上传到我的在线服务器,只是发现一些不正常的东西。快速查看常见问题解答会引导我this。我目前正在使用免费托管服务,因此请编辑任何php.ini设置。因此,使用常见问题解答的建议,我尝试使用cURL,但发现这也是由我的托管服务关闭。有没有其他简单的解决方案可以在不使用cURL或SimpleHTMLDOM的情况下抓取其他网页的内容?

4 个答案:

答案 0 :(得分:4)

如果未启用cURLallow_url_fopen,您可以尝试通过

获取内容
  • fsockopen - 打开Internet或Unix域套接字连接

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

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

答案 1 :(得分:1)

cURL是一种专业API。它不是经常被创建的http库,而是用于FTP,SFTP,SCP,HTTP PUT,SMTP,TELNET等的通用数据传输库。如果您只想使用HTTP,则可以使用PEAR library for that。或者检查您的PHP版本是否启用了官方http extension。 要抓取,请尝试phpQueryquerypath。两者都带有内置的http支持。

答案 2 :(得分:0)

这是一种在allow_url_fopen设置为false时抓取图片的简单方法,而不需要研究相似的工具。

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

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

file_get_contentscurl失败后,这对我有用。

答案 3 :(得分:-4)

file_get_contents()是获取页面而不安装额外库的最简单方法。