php 网页抓取(使用PHP的cURL库可以简单和有效地去抓网页)
优采云 发布时间: 2021-09-17 14:26php 网页抓取(使用PHP的cURL库可以简单和有效地去抓网页)
使用PHP的curl库可以简单有效地抓取网页。你只需要运行一个脚本并分析你抓取的网页,然后你就可以通过一种程序化的方式获得你想要的数据。无论您是想从链接获取一些数据,还是想获取一个XML文件并将其导入数据库,即使只是为了获取网页内容,curl都是一个功能强大的PHP库。本文主要介绍如何使用这个PHP库
启用卷曲设置
首先,我们必须确定我们的PHP是否已经打开了这个库。您可以使用PHP_uinfo()函数来获取此信息
﹤?php
phpinfo();
?﹥
如果您可以在网页上看到以下输出,则表示curl库已打开
如果您看到它,您需要设置PHP并打开库。如果你是在windows平台上,这是非常简单的。您需要更改php.ini文件的设置以查找php_Curl.dll并取消前面的分号注释。详情如下:
//取消下在的注释
extension=php_curl.dll
如果您使用的是Linux,则需要重新编译PHP。编辑时,需要打开编译参数-将“–with curl”参数添加到configure命令中
一个小例子
如果一切就绪,下面是一个小程序:
﹤? php
//初始化curl对象
$curl=curl_uinit()
//设置需要爬网的URL
curl_uu“setopt($curl,CURLOPT_uurl)”)
//设置标题
curl_uusetopt($curl,CURLOPT_头,1)
//设置curl参数以要求结果保存在字符串中或输出到屏幕
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1))
//运行curl以请求网页
$data=curl\u exec($curl)
//关闭URL请求
curl_close($curl)
//显示获得的数据
var_dump($数据)
如何发布数据
上面是捕获网页的代码,下面是发布到网页的数据。假设我们有一个处理表单的网址,它可以接受两个表单字段,一个是电话号码,另一个是短信内容
﹤?php
$phoneNumber = '13912345678';
$message = 'This message was generated by curl and php';
$curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();
curl_close($ch);
?﹥
从上面的程序中,我们可以看到使用curlopt_post来设置HTTP协议的post方法,而不是get方法,然后使用curlopt_postfields来设置post数据
关于代理服务器
下面是一个如何使用代理服务器的示例。请注意突出显示的代码。代码非常简单,因此我不需要多说
﹤?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();
curl_close($ch);
?﹥
关于SSL和Cookie