За последние 24 часа нас посетили 24205 программистов и 1538 роботов. Сейчас ищут 1320 программистов ...

Краулер. Как сделать так,чтобы кол выитывал точку из файла XML?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Mihas.beg, 16 сен 2023.

  1. Mihas.beg

    Mihas.beg Новичок

    С нами с:
    16 сен 2023
    Сообщения:
    2
    Симпатии:
    0
    Код вычитваат все текстом,а надо,чтобы выбирал теги и заносил из в таблицу. Что тут исправить,что все воркало? НУЖНА ПОМОЩЬ!!!!

    PHP:
    1. $folder = 'C:\xampp\htdocs\xml';
    2. $files = scandir($folder);
    3.  
    4. // Проход по каждому файлу
    5. foreach ($files as $file) {
    6.     // Игнорирование текущей и родительской директорий
    7.     if ($file == '.' || $file == '..') {
    8.         continue;
    9.     }
    10.    
    11.     // Проверка расширения файла
    12.     $extension = pathinfo($file, PATHINFO_EXTENSION);
    13.     if ($extension != 'xml') {
    14.         continue;
    15.     }
    16.    
    17.     // Загрузка XML-файла
    18.     $dom = new DOMDocument();
    19.     $dom->load($folder . '/' . $file);
    20.  
    21.     $elements = $dom->getElementsByTagName('*');
    22.    
    23.     // Счетчик строк
    24.     $line_counter = 0;
    25.  
    26.     foreach ($elements as $element) {
    27.         // Увеличение счетчика строк
    28.         $line_counter++;
    29.        
    30.         // Проверка количества строк
    31.         if ($line_counter > 3) {
    32.             break;
    33.         }
    34.        
    35.         $tag_name = $element->tagName;
    36.        
    37.         // Извлечение атрибутов элементов
    38.         $attributes = $element->attributes;
    39.         foreach ($attributes as $attribute) {
    40.             $attribute_name = $attribute->name;
    41.             $attribute_value = $attribute->value;
    42.             echo "$tag_name attribute: $attribute_name = $attribute_value<br>";
    43.            
    44.             // Проверка наличия столбца в базе данных
    45.             $column_exists = checkColumnExists($tag_name, $attribute_name);
    46.             if ($column_exists) {
    47.                 echo "Столбец $attribute_name уже существует в базе данных<br>";
    48.             } else {
    49.                 echo "Столбец $attribute_name не существует в базе данных<br>";
    50.                
    51.                 // Создание столбца в базе данных
    52.                 createColumn($tag_name, $attribute_name);
    53.                 echo "Столбец $attribute_name успешно создан в базе данных<br>";
    54.             }
    55.            
    56.             // Запись значения в базу данных
    57.             writeValueToDatabase($tag_name, $attribute_name, $attribute_value);
    58.         }
    59.        
    60.         // Извлечение значений элементов
    61.         $node_value = $element->nodeValue;
    62.         echo "$tag_name value: $node_value<br>";
    63.     }
    64.    
    65.     // Прерывание процесса после трех строк
    66.     if ($line_counter > 3) {
    67.         break;
    68.     }
    69. }
    70.  
    71. function checkColumnExists($table, $column) {
    72.     // Подключение к базе данных
    73.     $servername = "localhost";
    74.     $username = "username";
    75.     $password = "password";
    76.     $dbname = "database";
    77.  
    78.     $conn = new mysqli($servername, $username, $password, $dbname);
    79.    
    80.     // Проверка наличия столбца
    81.     $sql = "SHOW COLUMNS FROM $table LIKE '$column'";
    82.     $result = $conn->query($sql);
    83.    
    84.     if ($result->num_rows > 0) {
    85.         return true;
    86.     } else {
    87.         return false;
    88.     }
    89. }
    90.  
    91. function createColumn($table, $column) {
    92.     // Подключение к базе данных
    93.     $servername = "localhost";
    94.     $username = "localhost";
    95.     $password = "root";
    96.     $dbname = "reader";
    97.  
    98.     $conn = new mysqli($servername, $username, $password, $dbname);
    99.    
    100.     // Создание столбца
    101.     $sql = "ALTER TABLE $table ADD COLUMN $column VARCHAR(255)";
    102.     $conn->query($sql);
    103. }
    104.  
    105. function writeValueToDatabase($table, $column, $value) {
    106.     // Подключение к базе данных
    107.     $servername = "localhost";
    108.     $username = "localhost";
    109.     $password = "root";
    110.     $dbname = "reader";
    111.  
    112.     $conn = new mysqli($servername, $username, $password, $dbname);
    113.    
    114.     // Запись значения в базу данных
    115.     $sql = "INSERT INTO $table ($column) VALUES ('$value')";
    116.     $conn->query($sql);
    117. }
    От модератора: для кода кнопка </>
     
    #1 Mihas.beg, 16 сен 2023
    Последнее редактирование модератором: 17 сен 2023
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    905
    Симпатии:
    143
  3. Mihas.beg

    Mihas.beg Новичок

    С нами с:
    16 сен 2023
    Сообщения:
    2
    Симпатии:
    0
    Что-то не хочет работать(
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    905
    Симпатии:
    143
    Ты воруешь чужую выдачу, такое бесплатно никто не делает, не умеешь сам, найми того, кто умеет. И вообще фу-фу-фу.