Как получить элемент ссылки на HTML-странице с PHP - PullRequest
1 голос
/ 20 августа 2011

Во-первых, я знаю, что могу получить HTML-код веб-страницы с:

file_get_contents($url);

То, что я пытаюсь сделать, это получить определенный элемент ссылки на странице (найден в заголовке).

например:

<link type="text/plain" rel="service" href="/service.txt" /> (the element could close with just >)

У меня вопрос: как я могу получить этот конкретный элемент с атрибутом rel, равным «service», чтобы я мог получить href?

Мой второй вопрос: должен ли я также получить элемент «base»? Это относится к элементу "ссылка"? Я пытаюсь следовать стандарту.

Кроме того, html может содержать ошибки. Я не контролирую, как там пишут мои пользователи.

Ответы [ 3 ]

3 голосов
/ 20 августа 2011

Используя PHP DOMDocument, это должно сделать это (не проверено):

$doc = new DOMDocument();
$doc->loadHTML($file);
$head = $doc->getElementsByTagName('head')->item(0);
$links = $head->getElementsByTagName("link");
foreach($links as $l) {
    if($l->getAttribute("rel") == "service") {
        echo $l->getAttribute("href");
    }
}
0 голосов
/ 20 августа 2011

Я работаю с Selenium под Java для тестирования веб-приложений. Он предоставляет очень хорошие возможности для обхода документов с использованием CSS-селекторов.

Посмотрите на Как использовать Selenium с PHP .
Но эта настройка может быть сложной для ваших нужд, если вы хотите извлечь только одну ссылку.

0 голосов
/ 20 августа 2011

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

По правде говоря, когда мне приходится скрашивать, я использую phpquery. Это более старый PHP-порт jQuery ... и то, что может показаться глупым понятием, отлично подходит для обхода документов ... и не требует правильно сформированного XHTMl.

http://code.google.com/p/phpquery/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...