1、爬虫的本质简单来说,就是读取页面源代码,然后用正则匹配得到想要的数据。
示例如下:
private function spider_jiuyou_list($listname,$url)
{
$fcontents=file_get_contents($url); //读取到字符串中
$table_data = preg_match_all('#<table>(.*?)</table>#si',$fcontents,$match); //正则匹配
if(!$table_data)return; $table_data = $match[0][0]; //将需要的内容赋值给$table_data
$table_array = explode('<tr>',$table_data); //将字符串其变成一维数组
$data = array(); for($i=2;$i<count($table_array);$i++){
$data[$i] = explode('</td>',$table_array[$i]); //将一维数组变成二维数组
for($j = 0;$j<count($data[$i]);$j++){
$data[$i][$j] = preg_replace('/\s(?=\s)/','',trim(strip_tags($data[$i][$j]))); //先把html标签去掉,然后去掉首尾空格,接着把中间的长空格变成一个空格
}
$data[$i][5] = 'jiuyou';
$data[$i][6] = $listname;
$data[$i][7] = date('Y-m-d');
} $kname = array('RANK', 'GAME', 'CATEGORY','BETA', 'DATA','CHANNELNAME','LISTNAME', 'THEDATE');
foreach($data as $key=>&$val){
$val = array_combine($kname,$val); //把二维数组中的第二层键全部变成$kname中的值。
} for($i=2;$i<(count($data)+2);$i++){
$this->db->insert('TBL',$data[$i]);
}
}
2、$a是个json串。json_decode($a),则得到一个里面元素都是对象的数组。json_decode($a,true),就会转换成纯数组。
或者还有一种方法,将json_decode($a)的数组转换成纯数组。
public function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
}
if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = $this->object_array($value);
}
}
return $array;
}