php抓取网页数据实例( 使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)

优采云 发布时间: 2021-09-18 04:19

  php抓取网页数据实例(

使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)

  PHP curl模拟登录并获得数据实例的详细说明

  更新时间:2016年12月22日08:36:05投稿:Lqh

  Curl是一个功能强大的PHP库。使用PHP的curl库,您可以简单有效地抓取网页和采集内容,设置cookies以完成模拟登录网页。Curl提供了丰富的函数。开发人员可以从PHP手册中获得有关curl的更多信息。本文以模拟登录开源中国(oschina)为例。需要它的朋友可以参考它

  PHP curl()在捕获web页面方面相对高效,并且支持多线程,而file_uget_uuu内容()的效率稍低。当然,在使用curl时,需要启用curl扩展

  规范实践

  让我们首先看看登录代码:

  

//模拟登录

function login_post($url, $cookie, $post) {

$curl = curl_init();//初始化curl模块

curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址

curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息

curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中

curl_setopt($curl, CURLOPT_POST, 1);//post方式提交

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息

curl_exec($curl);//执行cURL

curl_close($curl);//关闭cURL资源,并且释放系统资源

}

  函数login\upost()首先初始化curl\uinit(),然后curl\usetopt()设置相关选项信息,包括要提交的URL地址、保存的cookie文件、Post数据(用户名、密码等信息)、是否返回信息等,然后curl\uexec执行curl,最后curl\uclose()释放资源。请注意,PHP随HTTP_uBuild_uQuery()一起提供,它可以将数组转换为串联字符串

  接下来,如果登录成功,我们需要在登录成功后获取页面信息

  

//登录成功后获取数据

function get_content($url, $cookie) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie

$rs = curl_exec($ch); //执行cURL抓取页面内容

curl_close($ch);

return $rs;

}

  函数get_u;In content(),首先初始化curl,然后设置相关选项以执行curl并释放资源。如果returntransfer为1,则会自动返回信息,而curlopt_uuuuCookie文件可以读取登录时保存的Cookie信息,最后返回页面内容

  我们的最终目标是在模拟登录后获得信息,即只有在正常登录成功后才能获得有用的信息。接下来,让我们以开源中国的移动版为例,看看如何在成功登录后捕获信息

  

//设置post的数据

$post = array (

'email' => 'oschina账户',

'pwd' => 'oschina密码',

'goto_page' => '/my',

'error_page' => '/login',

'save_login' => '1',

'submit' => '现在登录'

);

//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录

login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件

@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";

preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;

  使用摘要

  1、initializecurl

  2、use curl_uusetopt设置目标URL和其他选项

  3、curl_Exec,executecurl

  @执行4、后,关闭旋度

  5、输出数据

  感谢您的阅读,希望能对您有所帮助,感谢您对本网站的支持

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线