如何生成随机的html文档

时间:2010-05-08 18:15:45

标签: python html random grammar

我想生成完全随机的html源代码,可能来自语法。我想在python中这样做,但我不知道如何继续 - 是否有一个带语法的库,只是随机遵循其规则,打印路径?

想法?

2 个答案:

答案 0 :(得分:7)

import urllib

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

我认为拉随机页面更容易实现,并且比你自己编程的任何东西都更随机。任何旨在生成随机页面的程序仍然必须遵守定义html结构的任何规则。由于人类比机器更好,破坏规则,因此网页上的随机页面更可能包含您无法从随机数发生器获得的结构。

您不必使用雅虎,可能还有其他随机链接生成器,或者您可以构建自己的。

答案 1 :(得分:3)

滚动你自己的随机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())