php scraper脚本需要更改

时间:2014-01-28 14:23:13

标签: php

此脚本从种子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);
        }
    }

?>

2 个答案:

答案 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中的示例编写的,确切的实现可能需要一些调试,但这应该让你足够接近。