用CURL在PHP中模拟登录和获取数据实例
CURL是一个强大的PHP库。使用PHP的cURL库,可以简单有效地抓取网页并收集内容,并设置cookie来模拟登录网页。curl提供了丰富的功能,开发人员可以从PHP手册中获得更多关于cURL的信息。本文以模拟登录oschina为例,分享cURL的使用。PHP的curl()在抓取网页时效率更高,支持多线程,而file_get_contents()的效率较低。当然,使用curl时,需要打开curl扩展。
代码战斗
先看登录部分的代码:复制代码的代码如下://模拟登录函数login _ post ($ URL,$ cookie,$ post){ $ curl=curl _ init();//初始化curl模块curl _ setopt ($ curl,curl opt _ URL,$ URL);//登录提交的地址curl _ setopt ($ curl,curl opt _ header,0);//是否显示表头信息curl _ setopt ($ curl,curl opt _ return transfer,0);//是否自动显示返回的信息curl _ setopt ($ curl,curl opt _ cookie jar,$ cookie);//将Cookie信息设置为保存在指定的文件curl _ setopt中($ curl,curl opt _ post,1);//在post模式下提交curl _ setopt($ curl,curl opt _ postfields,http _ build _ query($ post));//要提交的信息curl _ exec($ curl);//执行cURL cURL _ close($ cURL);//关闭cURL资源并释放系统资源}
函数login_post()首先初始化curl_init(),然后使用curl _ setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)。),是否返回信息等。然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP自己的http_build_query()可以将数组转换为连接的字符串。接下来,如果登录成功,我们需要在登录成功后获取页面信息。复制代码如下://成功登录后获取数据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);//read cookie $ RS=curl _ exec($ ch);//执行cURL抓取页面内容cURL _ close($ ch);返回$ rs}
在函数get_content()中,首先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,而CURLOPT_COOKIEFILE则可以读取登录时保存的cookie信息,最终返回页面内容。
我们的最终目的是获得模拟登录后的信息,即正常登录成功后才能获得的有用信息。接下来我们以开源中国手机版为例,看看如何在成功登录后抓取信息。
复制代码如下://设置post数据$ post=array(' email '=' oschina account ',' pwd'='oschina password ',' goto _ page'='/my ',' error _ page'='/login ',' save _ login'=。//登录地址$ URL=' http://m.jb51.net/action/user/login';//设置cookie保存路径$ cookie=dirname (_ _ file _ _)'/cookie _ JB 51 . txt ';//登录后获取信息的地址为$ URL 2=' http://m . JB 51 . net/my ';//模拟login_post($url,$cookie,$ post);//获取登录页面的信息$ content=get _ content ($ url2,$ cookie);//删除cookie文件@ unlink($ cookie);//匹配页面信息$ preg='/TD class='人像'(。*)\/TD/I ';preg_match_all($preg,$content,$ arr);$ str=$ arr[1][0];//输出内容echo $ str
运行以上代码后,我们会看到最终获得的登录用户头像图片。
用法总结:1。初始化卷曲;2.使用curl _ setopt来设置目标url和其他选项;3.curl_exec,执行curl;4.执行后,关闭收拢;5.输出数据。
版权声明:用CURL在PHP中模拟登录和获取数据实例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















