php中对cURL类使用的实例
require 'connect.php';//数据库连接
header('content-type:text/html; charset=utf-8');
function caijingNews(){
$url='http://www.yuncaijing.com/insider/simple.html';//采集地址
$ch=curl_init($url);//初始化curl
//下面curl_setopt()就是开始设置
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//1 curl_exec()获取的信息以字符串返回
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0');//http请求中包含User-Agent 火狐 ps:我之前没设置正确的user-agent老是被禁ip
$content=curl_exec($ch);//执行抓取任务,获取整个网页内容
curl_close($ch);
$content=str_replace('云财经讯,',' ',$content);//将‘云财经讯,’替换成目标字符串 因为涉及到版权信息归属问题,所以将其替换,安全第一
$data1=array();
$pattern1='/nc-con.*?href="(.*?)".*?title="(.*?)"/s';//抓取目标标题规则
preg_match_all($pattern1,$content,$matches);//正则表达式匹配函数
for($j=0;$j<count($matches);$j++){//遍历匹配到的数据
$data1=$matches[$j];
}
$data2=array();
$pattern2='/(?<=<\/h4>).*?(?=<)/s';//抓取目标内容规则
preg_match_all($pattern2,$content,$matches);
for($i=0;$i<count($matches);$i++){
$data2=$matches[$i];
}
$data=array();
foreach ($data1 as $k=>$v){//将两个一维数组合成一个相关的二维数组(一个标题对应一个内容)
$arr=array('title'=>$v,'content'=>$data2[$k]);
$data[]=$arr;
}
return $data;
}
$result=caijingNews();//采集结果(二维数组)
for($k=0;$k<count($result);$k++){//将采集结果遍历循环输出写入数据库,数据库中title设为唯一值,防止数据重复录入
$title=$result[$k]['title'];
$content=trim($result[$k]['content']);
$sql="insert into msg (title,content) values ('$title','$content')";
$connect->query($sql);
$j++;
}
抓取的结果显示为:
Array
(
[0] => Array
(
[title] => 大盘预测神器:两大神秘指标提前预判大盘下跌
[content] => 趋势领航者和神秘资金在4月7日发出的卖出信号形成了共振,图表上就是时间与空间交汇形成拐点,触发下跌!截止今天(4月12日),两市指数再度出现中度调整,进一步验证模型的有效性!!
)
[1] => Array
(
[title] => 吉比特预计一季度净利润同比增加173%至 209%
[content] => 吉比特预计2017年第一季度实现归属于上市公司股东的净利润约为1.5亿元至 1.7亿元,与 2016 年第一季度相比增加173%至 209%,与2016年第四季度相比增加21%至37%。
)
[2] => Array
(
[title] => 嘉寓股份:13日开市起继续停牌
[content] => 嘉寓股份:4月6日因雄安新区投资事项收监管函并停牌后,目前还在准备就监管函的相关事项进行回复,股票自13日开市起继续停牌。
)
)