此脚本从种子URL中收集链接,并仅在命令shell(或浏览器)中打印它们,而不是保存在其他位置。我希望脚本将.txt文件中的任何输出存储在脚本所在的文件夹中。我需要建议可能是有效的方法。请给我提示。
<?php
# Initialization
include("LIB_http.php"); // http library
include("LIB_parse.php"); // parse library
include("LIB_resolve_addresses.php"); // address resolution library
include("LIB_exclusion_list.php"); // list of excluded keywords
include("LIB_simple_spider.php"); // spider routines used by this app.
set_time_limit(3600); // Don't let PHP timeout
$SEED_URL = "http://www.schrenk.com"; // First URL spider downloads
$MAX_PENETRATION = 1; // Set spider penetration depth
$FETCH_DELAY = 1; // Wait one second between page fetches
$ALLOW_OFFISTE = false; // Don't allow spider to roam from the SEED_URL's domain
$spider_array = array();
# Get links from $SEED_URL
echo "Harvesting Seed URL \n";
$temp_link_array = harvest_links($SEED_URL);
$spider_array = archive_links($spider_array, 0, $temp_link_array);
# Spider links in remaining penetration levels
for($penetration_level=1; $penetration_level<=$MAX_PENETRATION; $penetration_level++)
{
$previous_level = $penetration_level - 1;
for($xx=0; $xx<count($spider_array[$previous_level]); $xx++)
{
unset($temp_link_array);
$temp_link_array = harvest_links($spider_array[$previous_level][$xx]);
echo "Level=$penetration_level, xx=$xx of ".count($spider_array[$previous_level])." <br>\n";
$spider_array = archive_links($spider_array, $penetration_level, $temp_link_array);
}
}
?>
答案 0 :(得分:0)
使用file_put_contents PHP函数和enable append file flag。
$file = 'file_name.txt';
file_put_contents($file, $text_to_write_to_file, FILE_APPEND);
参考:http://www.php.net/manual/en/function.file-put-contents.php
答案 1 :(得分:0)
我建议首先创建一个变量来将输出存储在脚本中。所以在顶部(在$spider_array=array()
下)添加:
$output = "";
将echo
的所有行更改为$output .=
这会将发送到屏幕或浏览器的所有内容存储到$output
变量中。
现在位于脚本底部,在抓取所有内容并完成蜘蛛后,将输出保存到文件中:
$filename = date('Y_m_d_H_i_s') . '.txt';
$filepath = dirname(__FILE__);
file_put_contents($filepath . '/' . $filename, $output);
这应该将输出保存在与具有日期/时间文件名的脚本相同的文件夹中的文件中。 (此代码是使用php.net中的示例编写的,确切的实现可能需要一些调试,但这应该让你足够接近。