Скрипт парсинга выдачи ПС (наличие изображений в выдаче)
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