Скрипт парсинга выдачи ПС (наличие изображений в выдаче)

Last update: 22 Квітня, 2023

Category: Parsing

В этом файле – заготовка под скрипт парсинга, выполняющий проверку, есть ли по указанному ключу изображения в поисковой системе. Что важно знать… поисковые системы отслеживают количество запросов с одного IP, потому этот скрипт желательно переключать между разными прокси. Готового решения у меня пока что нет.

<?php 
include_once 'core/function_get_web_page.php';

/* читаем ключи из файла */

/* выбираем файл */
$file = file('text.txt');
/* считаем в нем строки */
$all_lines_in_file = count($file);
$count = $all_lines_in_file - 1;


/* Начало таблицы */
echo '<div><table>';

/* выводим строку с номером 6 */
// for ($i=0; $i<=$count; $i+=1) {
$i=3;
$line_number = 1+$i;
echo '<tr>';
    /* выводим номер строки из файла */
    echo '<td>'.$line_number.'</td>';
/* получаем из строки из файла ключ */
$line_from_file = $file[$i];
    /* выводим ключ из файла */
    echo '<td>'.$line_from_file.'</td>';
/* меняем пробелы на плюсики */
//$key_with_plus = str_replace(' ','+',$line_from_file);
$key_with_plus = str_replace(' ','%20',$line_from_file);
/* убираем пробел и другие лишние символы */
$key_without_space = rtrim($key_with_plus, "\x00..\x1F");
/* получаем ключ по которому и будем искать */
$key_to_search = $key_without_space;

/* ссылка по которой мы будем искать */
$url = 'https://www.google.com.ua/search?q='.$key_to_search.'&aqs=chrome..69i57j0l5.1076j0j4&sourceid=chrome&ie=UTF-8';
//$url = '<a href="https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q='.$key_to_search.'">https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q='.$key_to_search.'</a>';
    /* выводим информацию о ссылке $url */
    echo '<td>'.$url.'</td>';
/* используем функцию для загрузки страницы */
$data = get_web_page($url);
/* заносим всю страницу внутрь переменной */
echo $all_text = $data['content'];
/* разделяем всю страницу на части */
$text_parts = explode('<div class="g">', $all_text);
    /* определяем, в каком из блоков находятся фотографии */
    $block_number = '';
    if ( substr_count($text_parts[1],"Зображення для запиту") != 1 ) { $block_number = '1'; }
    else if ( substr_count($text_parts[2],"Зображення для запиту") != 2 ) { $block_number = '2'; }
    else if ( substr_count($text_parts[3],"Зображення для запиту") != 3 ) { $block_number = '3'; }
    else if ( substr_count($text_parts[4],"Зображення для запиту") != 4 ) { $block_number = '4'; }
    else if ( substr_count($text_parts[5],"Зображення для запиту") != 5 ) { $block_number = '5'; }
    else if ( substr_count($text_parts[6],"Зображення для запиту") != 6 ) { $block_number = '6'; }
    else if ( substr_count($text_parts[7],"Зображення для запиту") != 7 ) { $block_number = '7'; }
    else if ( substr_count($text_parts[8],"Зображення для запиту") != 8 ) { $block_number = '8'; }
    else if ( substr_count($text_parts[9],"Зображення для запиту") != 9 ) { $block_number = '9'; }
    else if ( substr_count($text_parts[10],"Зображення для запиту") != 10 ) { $block_number = '10'; }
    else { $block_number = 'none'; }
    /* выводим информацию о том, в каком из блоков выведены изображения */
    echo '<td>'.$block_number.'</td>';


//echo $text_parts[2];
/* ищем слова на странице 
$word_count = substr_count($all_text,"Зображення для запиту");
//echo '<br>Есть ли изображения на странице? <br/>'.$word_count.'<br/>';
$word_b_count = substr_count($all_text,'class="g"');
//echo '<br>выведено записей при поиске <br/>'.$word_b_count.'<br/>';
*/
echo '</tr>';
//}  
echo '</table></div>
<style>
table { border-right: 1px solid #b4e6b4; border-top: 1px solid #b4e6b4; border-spacing: 1px; }
table tr td { border-left: 1px solid #b4e6b4; border-bottom: 1px solid #b4e6b4; padding: 5px; }
</style>';

Содержимое файла core/function_get_web_page.php

<?php
function get_web_page( $url )
{
  $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
  
  $ch = curl_init( $url );
  
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу
  curl_setopt($ch, CURLOPT_HEADER, 0);           // не возвращает заголовки
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
  curl_setopt($ch, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);        // таймаут ответа
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа (не много ли!?)
  
  $content = curl_exec( $ch );
  $err     = curl_errno( $ch );
  $errmsg  = curl_error( $ch );
  $header  = curl_getinfo( $ch );
  curl_close( $ch );
  
  $header['errno']   = $err;
  $header['errmsg']  = $errmsg;
  $header['content'] = $content;
  return $header;
}

Сами ключи хранятся в отдельном файле – по 1 ключу в строчке, название файла text.txt