как получить список ссылок на веб-странице в PHP?

Возможный дубликат:
Веб-сайт для анализа URL-адресов

Как получить все ссылки на веб-странице с помощью PHP?

Мне нужно получить список ссылок: –

Google

Я хочу получить href ( http://www.google.com ) и текст (Google)

——————- ситуация: –

Я создаю сканер, и я хочу, чтобы он получил все ссылки, которые существуют в таблице базы данных.

Есть несколько способов сделать это, но способ, которым я подхожу к этому, – это что-то вроде следующего:

Используйте cURL для извлечения страницы, то есть:

// $target_url has the url to be fetched, ie: "http://www.website.com" // $userAgent should be set to a friendly agent, sneaky but hey... $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)'; curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $html = curl_exec($ch); if (!$html) { echo "<br />cURL error number:" .curl_errno($ch); echo "<br />cURL error:" . curl_error($ch); exit; } 

Если все идет хорошо, содержимое страницы теперь все в $ html.

Давайте перейдем и загрузим страницу в объект DOM:

 $dom = new DOMDocument(); @$dom->loadHTML($html); 

Пока что так хорошо, XPath для спасения, чтобы очистить ссылки из объекта DOM:

 $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); 

Прокрутите результат и получите ссылки:

 for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $link = $href->getAttribute('href'); $text = $href->nodeValue // Do what you want with the link, print it out: echo $text , ' -> ' , $link; // Or save this in an array for later processing.. $links[$i]['href'] = $link; $links[$i]['text'] = $text; } 

$ hrefs – объект типа DOMNodeList, а item () возвращает объект DOMNode для указанного индекса. Таким образом, в основном у нас есть цикл, который извлекает каждую ссылку как объект DOMNode.

Это должно в значительной степени сделать это за вас. Единственная часть, на которой я не уверен на 100%, – это ссылка на изображение или якорь, что бы происходило в этих условиях, я понятия не имею, поэтому вам нужно будет протестировать и отфильтровать их.

Надеюсь, это даст вам представление о том, как очистить ссылки, счастливое кодирование.