php curl抓取网页数据(利用语法爱命令行方式下工作的文件传输工具支持认证功能)
优采云 发布时间: 2021-12-10 00:40php curl抓取网页数据(利用语法爱命令行方式下工作的文件传输工具支持认证功能)
CURL 是一个文件传输工具,它使用 URL 语法在命令行模式下工作。它支持多种协议。支持认证功能。常用在php中实现更复杂的传输功能。
实现的功能:
1、实现远程访问和采集内容
2、实现PHP网页版FTP上传下载
3、实现模拟登录:去一个邮件系统,curl可以模拟cookies
4、 实现接口对接(API)、数据传输等:通过平台发送短信,对传输的信息进行抓取和传输。
5、仿Cookie等:部分属性需要登录后才能操作。
如何使用CURL函数:
默认情况下,PHP 不支持 CURL。需要在php.ini中开启该功能
;extension=去掉php_curl.dll前面的分号
1 整个操作过程的第一步是用cur_init()函数进行初始化
$curl = curl_init(‘’)
2.使用 curl_setopt() 函数设置选项。
3.设置后,执行事务 curl_exec($curl);
4 最后关闭 curl_close();
使用PHP CURL实现传输获取功能(后传输方式):获取远程网页数据
$user = "admin";
$pass = "admin";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init(); //初始化一个CURL对象
curl_setopt($ch, CURLOPT_URL, “”);
//设置你需要爬取的网址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
//设置curl参数,询问结果是否输出到屏幕。为true时,不会返回网页
假设上面的0换成1,那么接下来的$data需要回显。
curl_setopt($ch, CURLOPT_POST, 1);
//帖子提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
//运行 curl 请求一个网页。
curl_close($ch);
[/code]
实现远程模拟登录最基本的部分。
curl 还需要配置用户名和密码,但是被浏览器隐藏了。
================================================ ==============================
curl 模拟登录
模拟登录:无需登录php100论坛即可查看相应信息。
分析登录字段—>登录后保持cookie状态—>读取cookie并跳转到相关页面—>抓取次数
1、模拟登录后创建文件保存cookie内容
2、通过读取生成的cookie内容模仿用户登录状态
3、前往相关页面获取所需内容
tempname 创建一个临时文件
tempnam() 函数创建一个具有唯一文件名的临时文件。如果成功,该函数返回新的临时文件名。如果失败,则返回 false。
tempnam(dir,prefix)
参数说明
目录是必需的。指定创建临时文件的目录。
前缀是必需的。指定文件名的开头。
相当于,fopen fwirte fclose
它可以返回一个布尔值。使用第三方登录你的QQ和msn是非常危险的,因为它可以记录你的登录状态并抓取你的用户名和密码。
使用CURL模拟登录PHP100论坛
1、分析输入框字段名和登录需要的字段数
2、保存cookie模拟登录获取会员金币数量
代码:
//初始化一个cURL对象
$curl = curl_init();
//设置你需要爬取的网址
curl_setopt($curl, CURLOPT_URL, ”“);
//设置cURL参数,要求结果以字符串形式保存或输出到屏幕。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
//运行cURL并请求一个网页
$data = curl_exec($curl);
//关闭网址请求
curl_close($curl);
$user = "admin";
$pass = "admin100";
$curlPost = "user=$user&pass=$pass";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ”“);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch);
curl_close($ch);
if($_POST[‘user’]==”admin”){
回声“”;
}其他{
回声“”;
}
//print_r($_POST);