LINUX.ORG.RU

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

 , , ,


0

1
curl -s ya.ru | sed 's/.*<title.*>\(.*\)<\/title>.*/\1/;'

Работает, но если попробовать другой сайт, например www.linux.org.ru, то оно выводит страницу целиком, а не только тайтл. :(

Нужен не только простой и рабочий способ выдернуть заголовок страницы, а еще чтоб он был Ъ (использовалась любая популярная утилита типа sed, grep и т.п.) и воспроизводим на 95% онтопик-дистрибутивов.

★★★★★
sed -nr 's^.*<title>(.*)</title>.*^\1^p'

Но это не совсем Ъ, так как ничто не мешает васе пупкину сделать <title> на одной строке и </title> на другой.

Deleted
()
Последнее исправление: fargred (всего исправлений: 2)
Ответ на: комментарий от Deleted
echo -e ' hfdjskh    <title> ZOMG AHM AWSUM\n  </title>fdsjfkl ds' |\
sed -nr '/<title>/ {:loop s^</title>^&^; T append; s/\n//g; s^.*<title>(.*)</title>.*^\1^p;Q0; :append N; b loop}'

Вот это будет работать даже если тэг разнесли на разные строки.

Deleted
()
Последнее исправление: fargred (всего исправлений: 1)
Ответ на: комментарий от Viglim

Не гунди, ему не надо какой-то абстрактный HTML парсить, ему надо один тег, заранее известный что он парный.

zolden ★★★★★
()

Ну можно как-то так на питоне:

from HTMLParser import HTMLParser as h
import sys, urllib

class mh(h):
    def handle_data(self, data):
        tag = self.get_starttag_text ()
        if tag is not None and tag.startswith ('<title'):
            print data

p = mh ();
p.feed (urllib.urlopen (sys.argv[1]).read ())

Или это вам не «Ъ»?

ashinkarov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.