采集脚本,实现了采集月光博客所有公开文章并分别以文本文档进行另存为,代码量虽少但做到了利用最大化,此方法还是以正则为中心,利用while与foreach的循环遍历操作进行实现。
实现思路:自增pageID,使用while进行循环GET拼接PageID后的URL,循环内部取得整个页面的字符串后利用正则提取出单Page页所有博文的文章URL与标题,再次以foreach循环遍历结果集,循环内部对遍历出来的URL再次GET后对返回结果进行正则匹配目的就是提取出文章的内容(一个标题对应一篇文章,因此不用担心在遍历循环的时候出现逻辑上的错误),万事俱备只欠东风,拼接路径依次写入。
<?php
header(
"content-type:text/html;charset=urf-8"
);
ini_set
(
'max_execution_time'
,
'0'
);
$page
= 1;
$preg
=
'#<h2sclass=".*?"><ashref="(.*?)"srel=".*?">(.*?)</a></h2>#'
;
$result
= preg_match_all(
$preg
,
$str
,
$arr
);
if
(
$result
){
foreach
(
$arr
[2]
as
$key
=>
$value
){
$content
=
file_get_contents
(
$arr
[1][
$key
]);
$preg
=
'#<divsid="artibody">(.*?)<psstyle="display:none;"sclass="cloudreamHelperLink"scodetype="post"sentryid="d+"></p></div>#'
;
preg_match(
$preg
,
$content
,
$newc
);
if
(!
file_exists
(
'./williamlong/html/'
))
mkdir
(
'./williamlong/html/'
,0777,true);
file_put_contents
(iconv(
"utf-8"
,
"gb2312"
,
"./williamlong/{$value}.txt"
),
$newc
[1]);
file_put_contents
(iconv(
"utf-8"
,
"gb2312"
,
"./williamlong/html/{$value}.html"
),
$content
);
}
$page
++;
}
else
{
echo
'匹配失败'
;
return
false;
}
}
?>