PHP веб-паук. Как определить URL-адрес с хешем на той же странице?

0

У меня есть функция:

public function getHeaders($url){
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL,            $url);
        curl_setopt($ch, CURLOPT_HEADER,         true);
        curl_setopt($ch, CURLOPT_NOBODY,         true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT,        10);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
        $x = curl_exec($ch);

        curl_close($ch);
        return (array) HTTP::parse_header_string($x) ;
    }

Когда $url=http://www.google.com', я have header location: http://www.google.de/?gfe_rd=cr&ei=SOMEHASHGOESHERE ' загрузите его снова и получите все, но, 'SOMEHASHGOESERE' другой сейчас.

Моя задача - создать веб-гусеничный движок. Я знаю, как делать основную логику. Но есть несколько нюансов. Один из них: что должен делать мой паук, если запрашиваемый url отправляет ему заголовок 'location' и пытается перенаправить? Какая модель поведения должна контролировать мой паук, чтобы быть невозможным превратить его в бесконечный цикл перенаправления?

(как идентифицировать похожие URL-адреса, например http://www.google.de/?gfe_rd=cr&ei=SOMEHASHGOESHERE, которые обычно используют для перенаправления циклов и дают моему пониманию пауков игнорировать такие ссылки)

  • 0
    Я не следую Вы ищете специфичный для Google ответ или общий ответ?
  • 0
    Поскольку вы, похоже, ищете общее решение, что не так с настройкой CURLOPT_MAXREDIRS ?
Показать ещё 1 комментарий
Теги:
web-crawler
url-redirection

1 ответ

0
Лучший ответ

Если вы пытаетесь просто обработать цель всех перенаправлений, вы можете получить завиток, чтобы следить за URL-адресом, не возвращая страницу перенаправления.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

если вас просто интересует базовый url без параметров url, вы можете легко его легко взорвать:

$urlParts = explode("?",$url);
$baseUrl = $urlParts[0];
  • 0
    Я думаю, что это плохая идея. Что произойдет, когда spider проанализирует какой-то конкретный сайт, имеющий определенную ссылку, которая будет генерировать перенаправления цикла? Я думаю, что подсчитывать перенаправления и прерывать, когда количество перенаправлений, например, более 5 .. Но также интересно посмотреть другие решения.
  • 0
    если бы вы могли объяснить вашу проблему более подробно, я могу ответить.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню