Веб-сайт для анализа URL-адресов

Просто интересно, может ли кто-нибудь помочь мне в дальнейшем со следующим. Я хочу проанализировать URL-адрес на этом веб-сайте: http: //www.directorycritic.com/free-directory-list.html? Pg = 1 & sort = pr

У меня есть следующий код:

<?PHP $url = "http://www.directorycritic.com/free-directory-list.html?pg=1&sort=pr"; $input = @file_get_contents($url) or die("Could not access file: $url"); $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>"; if(preg_match_all("/$regexp/siU", $input, $matches)) { // $matches[2] = array of link addresses // $matches[3] = array of link text - including HTML code } ?> 

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

Related of "Веб-сайт для анализа URL-адресов"

Использовать HTML Dom Parser

 $html = file_get_html('http://www.example.com/'); // Find all links $links = array(); foreach($html->find('a') as $element) $links[] = $element->href; 

Теперь массив ссылок содержит все URL-адреса данной страницы, и вы можете использовать эти URL-адреса для дальнейшего анализа.

Разбор HTML с регулярными выражениями не является хорошей идеей. Вот несколько связанных сообщений:

  • Использование регулярных выражений для анализа HTML: почему бы и нет?
  • RegEx соответствуют открытым тегам, за исключением тегов XHTML

РЕДАКТИРОВАТЬ:

Некоторые другие инструменты анализа HTML, описанные Гордоном в комментариях ниже:

  • phpQuery
  • Zend_Dom
  • QueryPath
  • FluentDom

Вы действительно не должны использовать регулярные выражения для синтаксического анализа HTML, так как это относится к ошибкам.

Лучше использовать HTML-парсер, например , библиотеку DOM в PHP :

 $code = file_get_contents($url); $doc = new DOMDocument(); $doc->loadHTML($code); $links = array(); foreach ($doc->getElementsByTagName('a') as $element) { if ($element->hasAttribute('href')) { $links[] = $elements->getAttribute('href'); } } 

Обратите внимание, что это будет собирать ссылки URI, как они появляются в документе, а не как абсолютный URI. Возможно, вы захотите разрешить их раньше.

Похоже, что PHP не предоставляет соответствующую библиотеку (или я ее еще не нашел). Но см. RFC 3986 – Референсное разрешение и мой ответ на Преобразование относительного URL-адреса в абсолютный URL-адрес с помощью Simple HTML DOM? для получения дополнительной информации.