curl和file_get_get_contents区别
curl 效率比file_get_contents 高很多 curl 的复杂程度高 curl 支持的方式比较 (get、post/文件上传等) file_get_contents只支持get请求
file_get_get_contents采集
//1.抓取页面
$url = "http://www.7k7k.com";
$data = file_get_contents($url);
//var_dump($data);
//正则
// '/<img src="(.+)">/' 正则表达式 $data=>采集的链接 $arr采集的结果
preg_match_all('/<title>(.+)<\/title>/',$data,$arr);
echo "<pre>";
print_r($arr);
CURL
<?php
//初始化 curl
$ch = curl_init();
//设置请求参数
curl_setopt($ch,CURLOPT_URL,'http://book.zongheng.com/store.html');
//不在浏览器直接输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
//发送请求
$data=curl_exec($ch);
//关闭
curl_close($ch);
//结合正则 //利用正则采集 //$data=>采集的结果 $arr=>正则后的结果
preg_match_all('/<div class="bookintro">(.+)<\/div>/',$data,$arr);
//print_r($data); 这是个二维数组
//二维数组转一维数组 array_merge()数组有相同的字符换键名=》后面的值覆盖前面的值 数组有相同的数字键名 =》依次加到后面
$result = array_reduce($arr, 'array_merge', array());
print_r($result); //输出
//PDO操作 连接数据库
$dbh = new Pdo ("mysql:host=127.0.0.1;dbname=1708a",'root','root');
//设置字符集编码
$dbh->exec('set names utf8');
//循环写入数据库
for($i=0;$i<count($result);$i++)
{
$sql = "INSERT INTO title (cont) VALUES ('$result[$i]')"; //
$data = $dbh->exec($sql); //执行
}
if($data)
{
echo "<script>alert('爬取数据到数据库成功')</script>";
}else{
echo "<script>alert('爬取数据到数据库失败');</script>";
}
//curl和filr_get_get_contents区别
//curl 效率比file_get_contents 高很多
//curl 支持的方式比较 (get、post/文件上传等) file_get_contents只支持get请求
//curl 的复杂程度高
?>