PHP-скрипты не работают и не выдают сообщение об ошибке - PullRequest
0 голосов
/ 30 марта 2012

Я скопировал этот код из книги, которую я добавил

<?php
# Initialization
include("LIB_http.php");
include("LIB_parse.php");
$product_array=array();
$product_count=0;

# Download the target (practice store) web page
$target = "http://www.WebbotsSpidersScreenScrapers.com/example_store";
$web_page = http_get($target, "");

# Parse all the tables on the web page into an array
$table_array = parse_array($web_page['FILE'], "<table", "</tables>");

#Look for the the table that contains the product information
for($xx=0; $xx<count($table_array); $xx++)
  {
  $table_landmark = "Products For Sale";
  if(stristr($table_array[$xx], $table_landmark))   // Process this table
    {
    echo "FOUND: Product table\n";


# Parse table into an array of table rows
$product_row_array = parse_array($table_array[$xx], "<tr", "</tr>");
for($table_row=0; $table_row<count($product_row_array); $table_row++)
  {
  # Detect the beginning of the desired data (heading row)
  $heading_landmark = "Condition";
  if((stristr($product_row_array[$table_row], $heading_landmark)))
  {
  echo "FOUND: Talbe heading row\n";

  # Get the position of the desired headings
  $table_cell_array = parse_array($product_row_array[$table_row], "<td", "</td>");
  for($heading_cell=0; $heading_cell<count($table_cell_array); $heading_cell++)
    {
    if(stristr(strip_tags(trim($table_cell_array[$heading_cell])), "ID#"))
      $id_column=$heading_cell;
    if(stristr(strip_tags(trim($table_cell_array[$heading_cell])), "Product name"))
      $name_column=$heading_cell;
    if(stristr(strip_tags(trim($table_cell_array[$heading_cell])), "Price"))
      $price_column=$heading_cell;
    }
  echo "FOUND: id_column=$id_column\n";
  echo "FOUND: price_column=$price_column\n";
  echo "FOUND: name_column=$name_column\n";   

  # Save the heading row for later use

  $heading_row = $table_row;
  }

  #Detect the end of the desired data table
  $ending_landmark = "Calculate";
  if((stristr($product_row_array[$table_row], $ending_landmark)))
    {
    echo "PARSING COMPLETE!\n";
    break;
    }

  # Parse product and price data
  if(isset($heading_row) && $heading_row<$table_row)
    {
    $table_cell_array = parse_array($product_row_array[$table_row], "<td", "</td>");
    $product_array[$product_count]['ID'] = strip_tags(trim($table_cell_array[$id_colum]));
    $product_array[$product_count]['NAME'] = strip_tags(trim($table_cell_array[$name_colum]));
    $product_array[$product_count]['PRICE'] = strip_tags(trim($table_cell_array[$price_colum]));
    $product_count++;
    echo"PROCESSED: Item #$product_count\n";
    }

  #Display the collected data
  for($xx=0; $xx<count($product_array); $xx++)
    {
    echo "$xx. ";
    echo "ID: ".$product_array[$xx]['ID'].", ";
    echo "NAME: ".$product_array[$xx]['NAME'].", ";
    echo "PRICE: ".$product_array[$xx]['PRICE'].", ";
    } 
}
}
}

Опять же, скрипт не выдаёт мне ошибок, но также ничего не выводит. Я не уверен, нужно ли мне добавлять?> В конце или нет. Это только мой второй скрипт php, который я запустил, так что я не уверен.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2013

Этот код взят из книги под названием

Веб-боты, пауки и скребки: руководство по разработке интернет-агентов с PHP / CURL от Михаэля Шренка

, для которого код не работаля в первый раз

после проверки кода я обнаружил, что целевой адрес был изменен

replace

$ target = "http://www.WebbotsSpidersScreenScrapers.com/example_store";

с

$ target = "http://www.webbotsspidersscreenscrapers.com/buyair";

0 голосов
/ 31 марта 2012

Не в ответ на вашу главную проблему, я думаю, что Марк Б ответил вам хорошо, но так как вы упомянули об этом, я добавлю, что закрытие?> Не требуется. Фактически это может вызвать проблемы «Заголовки уже отправлены», когда у вас много файлов и в конце есть пустые строки.

...