php curl抓取网页(如何使用PHP脚本代码中会的使用_curl代码如下)
优采云 发布时间: 2021-09-10 08:04php curl抓取网页(如何使用PHP脚本代码中会的使用_curl代码如下)
配置方法:
1、将PHP目录下的libeay32.dll和ssleay32.dll两个文件复制到system32目录下。
2、Modify php.ini:配置extension_dir,去掉extension=php_curl.dll前的分号。
总结:
在这个文章中,我主要讲解php_curl库的知识,教大家如何更好的使用php_curl。
简介
您在 PHP 脚本代码中可能会遇到这样一个问题:如何从其他站点获取内容?这里有几种解决方案;最简单的就是在php中使用fopen()函数或者fsockopen()函数,但是fopen函数和fsockopen()函数没有足够的参数可以使用,比如当你想搭建一个“网络爬虫”的时候,我要定义爬虫(IE、firefox)的客户端描述,通过不同的请求方式获取内容,如POST、GET;等等。这些要求是用 fopen() 函数和 fsockopen() 函数是不可能实现的。
为了解决我们上面提出的问题,我们可以使用PHP的扩展库-Curl。这个扩展库通常默认收录在安装包中。你可以用它来获取其他网站的内容,也可以做其他事情。
注意:这两段代码需要php_curl扩展库的支持。检查 phpinfo()。如果启用了 curl 支持,则表示支持 curl 库。
在1、Windows 下打开对 PHP 的 curl 库支持:
打开 php.ini 并删除;在 extension=php_curl.dll 之前。
2、Linux 下的 PHP 开启 curl 库支持:
编译PHP时,在./configure后面加上--with-curl
在这个文章中,我们来看看curl库的使用方法,看看它的其他用途,但接下来,我们将从最基本的用法开始
基本用法:
第一步,我们通过函数curl_init()新建一个curl会话,代码如下:
我们已经成功创建了一个curl会话,如果需要获取一个URL的内容,那么下一步,将一个URL传递给curl_setopt()函数,代码:
上一步完成后,curl的准备工作就完成了,curl会获取URL站点的内容并打印出来。代码:
最后,关闭当前的 curl 会话
让我们看看下面完成的示例代码:
(查看在线演示)
我们刚刚获取了另一个站点的内容并自动将其输出到浏览器。我们还有其他的方式来组织获取的信息,然后控制输出的内容吗?完全没有问题。在curl_setopt()函数的参数中,如果想获取内容但不输出,使用CURLOPT_RETURNTRANSFER参数并设置为非零值/true!,完整代码请看:
(查看在线演示)
在上面的两个例子中,你可能会注意到,通过设置函数 curl_setopt() 的不同参数可以得到不同的结果。这就是 curl 如此强大的原因。下面我们来看看这些参数的含义。
CURL 相关选项:
如果你看过php手册中的curl_setopt()函数,你会注意到它下面有一长串参数,我们无法一一介绍。更多内容请查看PHP手册。这里只介绍常用的。还有一些参数。
第一个有趣的参数是 CURLOPT_FOLLOWLOCATION。当您将此参数设置为 true 时,curl 将根据任何重定向命令获取更深层次的重定向路径。例如:当你尝试获取一个PHP页面时,那么这个PHP页面中有一个跳转代码,curl会获取内容而不是返回跳转代码。完整代码如下:
(查看在线演示),
如果 Google 发送重定向请求,上面的示例将继续根据重定向的 URL 获取内容。与此参数相关的两个选项是 CURLOPT_MAXREDIRS 和 CURLOPT_AUTOREFERER。
参数 CURLOPT_MAXREDIRS 选项允许您定义跳转请求的最大数量,超过该数量将不再检索内容。如果 CURLOPT_AUTOREFERER 设置为 true,curl 将自动在每个重定向链接中添加 Refererheader。它可能不是很重要,但在某些情况下非常有用。
下一步引入的参数是CURLOPT_POST,这是一个非常有用的特性,因为它允许你做POST请求而不是GET请求,这实际上意味着你可以提交
其他形式的页面不需要在表格中填写。以下示例说明了我的意思:
(观看现场演示)
以及 handle_form.php 文件:
如您所见,这使得提交表单变得非常容易,这是一种无需一直填写即可测试所有表单的好方法。
参数 CURLOPT_CONNECTTIMEOUT 通常用于设置 curl 尝试请求链接的时间。这是一个非常重要的选择。如果这个时间设置的太短,可能会导致 curl 请求失败。
但是如果设置的时间太长,PHP 脚本可能会死掉。与此参数相关的一个选项是 CURLOPT_TIMEOUT,用于设置 curl 执行所需的时间。如果设置的太小,可能会导致网页下载不完整,因为下载时间会比较长。
最后一个选项是 CURLOPT_USERAGENT,它允许你自定义请求的客户端名称,例如 webspilder 或 IE6.0.。示例代码如下:
(观看现场演示)
既然我们已经介绍了最有趣的参数之一,让我们介绍一个 curl_getinfo() 函数,看看它可以为我们做什么。
获取页面信息:
函数 curl_getinfo() 允许我们获取接收页面的各种信息。您可以通过设置选项的第二个参数来编辑此信息。也可以以数组的形式传递数组。就像下面的例子:
(观看现场演示)
返回的信息大部分是请求本身,比如:请求所用的时间,返回的头文件信息,当然还有一些页面信息,比如页面内容的大小,最后修改时间.
那些都是关于 curl_getinfo() 函数,现在让我们看看它的实际用途。
实际使用:
curl 库的第一个用途是检查 URL 页面是否存在。我们可以通过查看URL请求返回的代码来判断。例如,404 表示该页面不存在。让我们看一些例子:
(观看现场演示)
其他用户可能会创建一个自动检查器来验证每个请求的页面是否存在。
我们可以使用 curl 库来编写类似于 Google 或其他网络蜘蛛的网络蜘蛛。这个文章不是关于如何写一个网络蜘蛛,所以我们没有谈论任何关于网络蜘蛛的细节,但是在未来PHPit会介绍使用curl来构建一个网络蜘蛛。
结论:
在这个文章 中,我展示了如何在 php 中使用 curl 库及其大部分选项。
对于最基本的任务,你只是想得到一个网页,你可能不需要 CURL 库,但是一旦你想做一些稍微高级的事情,你可能想要使用 curl 库。
在不久的将来,我会告诉你如何构建自己的网络蜘蛛,类似于谷歌的网络蜘蛛,敬请关注phpit。
来自:%D1%DE%D1%F4597122966/blog/item/61b8727b1f1a60fd0ad1872d.html