反馈:
1、curl支持的协议:http、https、ftp、gopher、telnet、dict、file和ldap协议。
2、http协议状态码:
1. get是从服务器上获取数据,post是向服务器传送数据。 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式; 2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;3、cookie在http协议的哪部分?
HTTP协议采用了请求/响应模 型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而言,包括message-header和message-body两部分。首先传 递message-header,即http header消息 。http header 消息通常被分为4个部分:general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确。根据维基百科对http header内容的组织形式,大体分为Request和Response两部分。
浏览器请求服务器时:cookie数据在request header部分,HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
服务器返回给浏览器时:cookie数据在request header部分的Set-Cookie中。
4、php抓取网页内容的方式:
(1)、使用file_get_contents获得网页源代码。例如:$fh= file_get_contents('http://www.webkaka.com/');
(2)、使用fopen获得网页源代码。例如:
$fh = fopen('http://www.webkaka.com/', 'r');
if($fh){
while(!feof($fh)) {
echo fgets($fh);
}
}
(3)、使用curl获得网页源代码。
具体步骤:
1、获取要提交的表单元素
通过审查元素等工具,录一下登陆的过程,获取表单元素。当然也可以通过查看源代码找到需要提交的表单元素。
$post_fields = array (
'act' => 'login_submit',
'redir' => 'http://www.10jqka.com.cn/',
'uname' => 'xxxxxx',
'passwd' => 'xxxxxx',
'longLogin' => 'on'
);
需要配合http_build_query($post_fields)使用。
http_build_query会生成URL-encode之后的请求字符串。
因为许多网站会在一些需要登录后才能访问的页面进行设置,检查cookie数据是否存在。因此抓取这些页面的数据需要先保存cookie到临时目录。
$cookie_file = tempnam('./temp/','cookie');
3、设置curl参数
if($post_fields){
$cookie_file = tempnam('./temp/','cookie');//建立临时文件,返回文件名,第一个参数为生成文件的路径,若不可写,则写入系统默认路径
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);//传递数据
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file);// 把返回来的cookie信息保存在$cookie_jar文件中
curl_setopt($curl, CURLOPT_POST, 1);//post形式提交数据
}else{
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
}
curl_setopt($curl, CURLOPT_URL, $url);//要从哪个页面获取信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设定返回 的数据是否自动显示
curl_setopt($curl, CURLOPT_HEADER, 0);//设定是否显示头信息
4、运行并获取数据
$content = curl_exec($curl);//运行并获取数据
curl_close($curl);//关闭请求
5、数据的抓取-正则表达式或字符串截取
//读取字符串并除去html等标签
$data = strip_tags($content);
//1、正则表达式方法
$listNumberStr = '/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/i';
$re = preg_match($listNumberStr, $data, $list);
rerurn $list;
//2、字符串截取方法
$t1 = mb_strpos($content,'注册时间:');
$t2 = mb_strpos($content,'*性别');
$data1 = mb_substr($content,$t1+5,$t2-$t1-5);
rerurn $data1;
知识点:
1、curl的使用
2、验证信息的进入
3、正则表达式
4、字符串匹配