2010-05-08 53 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