使用php curl库可以抓取网页,这方面的文章,之前介绍了不少,大家参考下:
只需要运行一个脚本,然后分析所抓取的网页,然后就可以以程序的方式获取想要的数据。
无论从一个链接上取部分数据,或取一个xml文件并把其导入数据库,那怕就是简单的获取网页内容,curl 是一个功能强大的php库。
php中的curl函数库(client url library function)
例1: 基本例子
例2: post数据
sendsms.php,其可以接受两个表单域,一个是电话号码,一个是短信内容。
post数据
例3:使用代理服务器
使用代理服务器
例4: 模拟登录
curl 模拟登录 discuz 程序,适合dz7.0,将username改成你的用户名,userpass改成你的密码就可以了.
curl 模拟登录 discuz 程序
<?php
!extension_loaded('curl') && die('the curl extension is not loaded.');
$discuz_url = 'http://www.lxvoip.com';//论坛地址
$login_url = $discuz_url .'/logging.php?action=login';//登录页地址
$get_url = $discuz_url .'/my.php?item=threads'; //我的帖子
$post_fields = array();
//以下两项不需要修改
$post_fields['loginfield'] = 'username';
$post_fields['loginsubmit'] = 'true';
//用户名和密码,必须填写
$post_fields['username'] = 'lxvoip';
$post_fields['password'] = '88888888';
//安全提问
$post_fields['questionid'] = 0;
$post_fields['answer'] = '';
//@todo验证码
$post_fields['seccodeverify'] = '';
//获取表单formhash
$ch = curl_init($login_url);
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 1);
$contents = curl_exec($ch);
curl_close($ch);
preg_match('/<inputs*type="hidden"s*name="formhash"s*value="(.*?)"s*/>/i', $contents, $matches);
if(!empty($matches)) {
$formhash = $matches[1];
} else {
die('not found the forumhash.');
}
//post数据,获取cookie
$cookie_file = dirname(__file__) . '/cookie.txt';
//$cookie_file = tempnam('/tmp');
$ch = curl_init($login_url);
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_post, 1);
curl_setopt($ch, curlopt_postfields, $post_fields);
curl_setopt($ch, curlopt_cookiejar, $cookie_file);
curl_exec($ch);
curl_close($ch);
//带着上面得到的cookie获取需要登录后才能查看的页面内容
$ch = curl_init($get_url);
curl_setopt($ch, curlopt_header, 0);
curl_setopt($ch, curlopt_returntransfer, 0);
curl_setopt($ch, curlopt_cookiefile, $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);
var_dump($contents);