2010-05-08 119 views
8

我想生成完全随机的HTML源文件,可能是从语法。我想在python中这样做,但我不知道如何继续 - 是否有一个需要语法并随机遵循其规则,打印路径的库?如何生成随机的html文件

想法?

+1

......我想我喜欢在那里这个项目是怎么回事;)如果你从来没有听说麻省理工学院的论文产生的:http://web.mit.edu/newsoffice/2005/paper.html – Stephen 2010-05-08 18:44:06

+0

http://www.w3.org/TR/REC-html40/sgml/intro.html为HTML提供了语法(作为SGML DTD),但是我不知道在哪里可以找到SGML乱码生成器库... – derobert 2010-05-08 18:47:34

+0

有一个Python的DTD解析器:http://www.garshol.priv.no/download/software/xmlproc/dtd-parser-doco.html。 – svick 2010-05-08 18:59:42

回答

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()) 
7
import urllib 

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

我认为拉一个随机页面更容易实现,并且比任何你可以编程的东西都要随机。任何旨在生成随机页面的程序都必须遵守定义html结构的任何规则。由于人类比机器更好,违反规则,网络中的随机页面更可能包含你不能从随机发生器获得的结构。

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

+1

+1:替代响应 – sixtyfootersdude 2010-05-08 20:27:40

+0

不够随机:) – karramba 2010-05-11 19:14:21

+4

不幸的是,雅虎页面不再存在。 :-( – 2013-08-09 13:14:16