EEfaq论坛-赚客自留地

 找回密码
 免费注册
查看: 739|回复: 8

从0开始学采集------高级篇:使用Curl模拟登陆网站

  [复制链接]
发表于 2014-11-2 16:00:49 | 显示全部楼层 |阅读模式
本帖最后由 kevinmy 于 2014-11-2 16:05 编辑

前言:
从0开始学采集------中级篇:使用Curl抓取网页内容,我们介绍了如何使用curl抓取论坛的帖子列表。但我们知道无论是论坛还是我们某些要采集和群发的对象,有很多时候是需要登陆后才可以访问或操作的。拿我们的例子TGL论坛来说,比如这个帖子,如何赚T币教程,阅读权限为10,也就是必须要登陆才可以看到,只有可以看到才能谈如何采集。再比如,只要涉及群发的没有一个不是必须先登陆的。那么今天我们就来介绍下,使用curl如何模拟登陆到TGL,我用相对最简单、易懂的语句写了一个例子,并配了注释,希望有兴趣的朋友参考下,结合上一篇的例子,综合起来就可以完成一个最简单的采集程序了。如果你能写出来,那么你就可以去尝试研究实战采集了,curl的参数还有很多,同时,许多网站的防采集、防群发措施也很多,需要更深入一步的研究才能解决。

采集步骤:
模拟登陆网站的过程要分两步进行:
1.先访问产生登陆cookie并保存。
2.读取cookie后,打开需要的页面采集或做其他你想要的操作。

参考代码:
<?php
set_time_limit(0);//设置允许脚本运行的时间为无限,默认为30秒
$username="填写你的用户名";
$password="填写你的密码";
$cookie_file = dirname(__FILE__)."/cookie.txt";//设置cookie文件的保存位置
$login_url = 'http://www.eefaq.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes';//要登陆的网页地址
//设置post要提交的内容

$post_data = array(
'username'=>$username,
'password'=>$password
);

//建立cookie开始,也就是步骤1
$ch = curl_init($login_url);//初始化
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//将返回的内容作为变量储存,而不输出.
curl_setopt($ch, CURLOPT_POST, 1);//设置提交方式为post
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//提交POST
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);//保存cookie
curl_exec($ch);//执行
curl_close($ch);//返回关闭
//建立cookie结束


$url='http://www.eefaq.com/thread-106111-1-1.html';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);//读取cookie
$contents = curl_exec($ch);
echo $contents;
curl_close($ch);
?>


一些参数的由来:
代码加注释,估计大家都看懂了。但是代码中$login_url,$post_data里面内容怎么得到的呢?答案在下图中,有耐心、想学习的朋友一定可以轻松找到。
1.png

至此,我的《从0开始学采集》系列教程也已完结,感谢月光飞燕每次都将我的帖子设置高亮,也感谢论坛里一直为我加分,一直回帖支持我的朋友们!有了大家的支持,才给了我写完整篇教程的动力。

虽然,我来到论坛仅仅一周多的时间,但在这里我学到了很多东西,确实感觉自己处身于所需要知识海洋里,思路变得开阔了,也渐渐的感觉到了自己的方向。从自己写贴中,也体会到了更应珍惜论坛中其他朋友提供的有价值帖子,因为别人写帖也必定要像自己一样至少花费1个小时的时间才能完成,教程往往也是作者在总结掌握知识的基础上,形成的智慧结晶,更应去仔细学习,认真实践。有问题回帖交流。





评分

参与人数 12e币 +56 收起 理由
useejack + 1 谢谢分享!
乐乐 + 5 認眞參與
ebookyx + 1
ryan2101 + 2
咚咚来了 + 1 楼主V5
newinsh + 3 鼓勵
晕蛋疯亲 + 5 送花花~~~
Leeker + 2 冲你最后一句话给你加分
lyytwenty + 1
xx19941215 + 1 有見地
月光飞燕 + 30 認眞參與
阿里爹地 + 4

查看全部评分

回复

使用道具 举报

发表于 2014-11-2 16:10:46 | 显示全部楼层
   感谢你的分享:)
回复 支持 反对

使用道具 举报

发表于 2014-11-2 17:14:05 | 显示全部楼层
完结啦?!!。。。                                    
回复 支持 反对

使用道具 举报

发表于 2014-11-2 17:42:00 | 显示全部楼层
这个太厉害了,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2014-11-2 18:23:41 | 显示全部楼层
不错
支持一下,我也常用curl采集
回复 支持 反对

使用道具 举报

发表于 2014-11-2 20:13:41 | 显示全部楼层
感谢分享。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-11-2 21:39:43 | 显示全部楼层
谢谢分享~~~~~~~~~~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2014-11-2 22:07:04 | 显示全部楼层
非常感谢分享,为新手又开了一扇门。
回复 支持 反对

使用道具 举报

发表于 2014-11-3 12:05:25 | 显示全部楼层
谢谢楼主分享采集经验,挺不错的教程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|联系我们|Archiver|手机版|小黑屋|EEfaq论坛

GMT+8, 2024-11-24 11:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表