使用PHP访问页面使用cURL,然后通过对获取的数据处理得到需要的内容。以http://www.hubu.edu.cn/Html/list.aspx?id=1网页为例,提取中间的新闻及相关信息。以前使用C++写过爬虫,但因为页面编码问题,导致后来对数据处理并没做好,但是PHP的编码转换要更好用,所以比C++会更简单。
$list=curl_init();
$url=curl_setopt($list, CURLOPT_URL , "http://www.hubu.edu.cn/Html/list.aspx?id=1");
curl_setopt($list, CURLOPT_RETURNTRANSFER , 1);
$result=curl_exec($list);
$fp=fopen("listFile.txt", "w");
$result = iconv("GBK", "UTF-8", $result);
fwrite($fp, $result);
fclose($fp);
首先通过cURL访问该网页,curl_setopt($list, CURLOPT_RETURNTRANSFER , 1);语句将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 这样$result就保存了该页面的数据,用iconv函数将编码从GBK转化成UTF-8,再写入listFile.txt文件中(不写入文件也可,这里写入只是方便后面分析)。
//初步过滤,过滤文件保存在filter.txt
$back = stristr($result,"新闻内容部分");
$back = stristr($back,"尾页",true);
$back = strip_tags($back,'<a>');
$back = stristr($back,"条记录",true);
$back = stristr($back,"<a");
$replaceList[0] = ' ';
$replaceList[1] = 'target="_blank"';
$back = str_replace($replaceList, '', $back);
$fp=fopen("filter.txt", "w");
fwrite($fp, $back);
fclose($fp)
通过分析listFile.txt文件如下