Как генерировать случайный документ HTML

Я хотел бы генерировать абсолютно случайную часть источника HTML, возможно от грамматики. Я хочу сделать это в Python, но я не уверен, как продолжить двигаться - там библиотека, которая берет грамматику и просто случайным образом следует ее правилам, печатая путь?

Идеи?

8
задан kennytm 8 May 2010 в 18:17
поделиться

2 ответа

Довольно легко сделать свой собственный генератор случайных html, который очень похож на нисходящий парсер. Вот основа!

def RandomHtml():
    yield '<html><body>'
    yield '<body>'
    yield RandomBody()
    yield '</body></html>'

def RandomBody():
    yield RandomSection()
    if random.randrange(2) == 0:
        yield RandomBody()

def RandomSection():
    yield '<h1>'
    yield RandomSentence()
    yield '</h1>'
    sentences = random.randrange(5, 20)
    for _ in xrange(sentences):
         yield RandomSentence()

def RandomSentence():
    words = random.randrange(5, 15)
    yield (' '.join(RandomWord() for _ in xrange(words)) + '.').capitalize()

def RandomWord():
    chars = random.randrange(2, 10)
    return ''.join(random.choice(string.ascii_lowercase) for _ in xrange(chars))

def Output(generator):
    if isinstance(generator, str):
        print generator
    else:
        for g in generator: Output(g)

Output(RandomHtml())
3
ответ дан 5 December 2019 в 17:35
поделиться
import urllib

html = urllib.urlopen('http://random.yahoo.com/bin/ryl').read()

Я думаю, что извлечение случайного page намного проще реализовать и будет гораздо более случайным, чем все, что вы могли бы запрограммировать самостоятельно. Любая программа, предназначенная для создания случайных страниц, все равно должна будет придерживаться любых правил, определяющих структуру html. Поскольку люди намного лучше и нарушают правила, чем машины, случайная страница из Интернета с большей вероятностью будет содержать структуры, которые вы не получите от рандомизатора.

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

7
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: