получить все <a>тегов href на странице с php - PullRequest
0 голосов
/ 21 мая 2018

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

$pageContent = file_get_contents("http://sample-site.org");

как я могу сохранить все внешние ссылки ??

например, если на веб-странице есть код, такой как:

<a href="http://othersite.com">other site</a>

Я хочу сохранить http://othersite.com в базе данных.другими словами, я хочу сделать сканер, который будет хранить все внешние ссылки на одной веб-странице.как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Я бы предложил использовать DOMDocument () и DOMXPath () .Это позволяет результату содержать только внешние ссылки, которые вы запрашивали.

В качестве примечания.Если вы собираетесь сканировать веб-сайты, вы, скорее всего, захотите использовать cURL , но я продолжу с file_get_contents () , поскольку именно это вы используете в этом примере.cURL позволит вам выполнять такие действия, как установка пользовательского агента, заголовков, сохранение файлов cookie и т. д., и будет выглядеть как настоящий пользователь.Некоторые веб-сайты пытаются предотвратить использование роботов.

$html = file_get_contents("http://example.com");

$doc = new DOMDocument();
@$doc -> loadHTML($html);
$xp = new DOMXPath($doc);

// Only pull back A tags with an href attribute starting with "http".
$res = $xp -> query('//a[starts-with(@href, "http")]/@href');

if ($res -> length > 0)
{
    foreach ($res as $node)
    {
        echo "External Link: " . $node -> nodeValue . "\n";
    }
}
else
    echo "There were no external links found.";

/*
 * Output:
 *  External Link: http://www.iana.org/domains/example
 */
0 голосов
/ 21 мая 2018

Вы можете использовать PHP Простой HTML DOM Parser find метод:

require_once("simple_html_dom.php");
$pageContent = file_get_html("http://sample-site.org");
foreach ($pageContent->find("a") as $anchor)
    echo $anchor->href . "<br>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...