Как спарсить в php скрипте контент с несколько url и удалить дубликаты?

Написал простой скрипт на php, который парсит прокси по трём url (api-запросы) .

Что я уже реализовал: чтоб скрипт парсил ip с нескольких мною указанных url, далее он должен удалять дубликаты в полученных результатах (если они есть), далее он должен уникальные результаты выдать построчно в коде элемента .

Ссылка на парсер: elisee84.bget.ru/test.php

Вставил для теста в скрипт парсера вот эти url
Австрия, Боливия и еще раз Австрия:

https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=at&limit=0
https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=bo&limit=0
https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=at&limit=0


Специально вставил 2 раза url Австрии, чтоб протестировать удаление дубликатов.
Так как две url-ки это Австрия, то там должна быть выдача одинаковых результатов парсинга, поэтому парсер должен удалить дубликаты и результаты должны быть уникальными с url Австрия и Боливия

Проблема в том что когда 2 url вставляю для парсинга и удаления дубликатов, то он удаляет дубликаты и выдаёт как положено построчно ip-шники (в коде страницы) но вставив 3-тю и больше url-лок, то при запросе elisee84.bget.ru/test.php ничего не отображает.

Какая ошибка в этом php скрипте?

Код php скрипта:
<?php
function Parse ($p1, $p2, $p3) {
	
	
}

$string = file_get_contents('https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=at&limit=0' , 'https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=bo&limit=0', 'https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=at&limit=0' );


$string_array = explode("\n ", $string);

$final_array = array_unique($string_array);

$final_string = implode("\n ", $final_array);

echo $final_string;



?>
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если нужно спарсить несколько url (отправить несколько запросов) то на каждый запрос нужно отдельно вызывать file_get_contents();
Передавать более 1 (одного) url в file_get_contents нельзя

https://www.php.net/file_get_contents
file_get_contents ( string $filename [, bool $use_include_path = FALSE [, resource $context [, int $offset = 0 [, int $maxlen ]]]] ) : string


Второй параметр это $use_include_path и передавать туда url не имеет смысла
Привалильный путь будет
file_get_content($url1);
file_get_content($url2);
file_get_content($url3);
//или то же самое в цикле


пример кода с циклом. результаты всех запросов склеиваются в $string
<?php
$urls = [
    "https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=at&limit=0",
    "https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=bo&limit=0",
    "https://api.best-proxies.ru/proxylist.txt?key=c5842ced830******555e0460b1&country=at&limit=0",
];

$string = "";
foreach($urls as $url)
{
    $string .= "\n".file_get_contents($url);
}

$string_array = explode("\n", $string);
$final_array = array_unique($string_array);
$final_string = implode("\n", $final_array);

echo $final_string;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы