王新阳

wangxinyang

简单的PHP采集示例

<?php
header('Content-type: text/html; charset=utf-8');
set_time_limit(900);
$a=<<<EOD
复制html内容到这里
EOD;
//获取需要的链接
preg_match_all('/\\/chapter\\/110701\\/\\d+\\.html/i', $a, $arr);
//得到完整链接地址
$arr = explode(',', 'http://vip.book.sina.com.cn' . implode(',http://vip.book.sina.com.cn', $arr[0]));
$b = '文章正文内容开始前面的html';
$c = '/正则匹配章节标题和章节内容之间的html,如果此部门内容没有时间等不同的字符,可以直接用str_replace而不是preg_replace';
$e = '文章正文内容结束后面的html';
$result = '';
//要获取的文章内容
$txt = fopen('e:/web/abc.txt', 'wb');
ob_start();
for ($i = 0; $i < count($arr); $i++) {
	$result = '';
	$str = file_get_contents($arr[$i]);
	//也可以用curl
	$str = explode($b, $str);
	$str = explode($e, count($str) > 1 ? $str[1] : $str[0]);
	$str = explode('</h1>', $str[0], 2);
	$result = $str[0] . "\r\n";
	$str = preg_replace($c, '', $str[1]);
	$str = str_replace('<p>', '', $str);
	$str = str_replace('</p>', "\r\n", $str);
	$result .= $str;
	fwrite($txt, $result);
	echo str_replace("\r\n", '<br />', $result);
	flush();
}
fclose($txt);


file_get_contents()抓取 https 地址时出错:
SSL operation failed with code 1. OpenSSL Error message

原因是证书校验不通过,可以设置忽略证书校验:

$option=array(
	'ssl'=>array('verify_peer' => false, 'verify_peer_name' => false)
);
$stream=stream_context_create($option);
file_get_contents($url, false, $stream);
2015-12-30
2025-04-05 星期六 农历三月初八