2010-05-08 24 views
8

मैं संभवतः व्याकरण से, HTML स्रोत का पूरी तरह से यादृच्छिक टुकड़ा उत्पन्न करना चाहता हूं। मैं इसे अजगर में करना चाहता हूं लेकिन मुझे यकीन नहीं है कि कैसे आगे बढ़ना है - क्या ऐसी कोई पुस्तकालय है जो व्याकरण लेती है और केवल अपने नियमों का पालन करती है, पथ को मुद्रित करती है?यादृच्छिक HTML दस्तावेज़ कैसे उत्पन्न करें

विचार?

+1

... मैं मुझे पसंद है जहां इस परियोजना के लिए जा रहा है लगता है;) मामले में आप एमआईटी कागज जनरेटर की कभी नहीं सुना है: http://web.mit.edu/newsoffice/2005/paper.html – Stephen

+0

http://www.w3.org/TR/REC-html40/sgml/intro.html एचटीएमएल के लिए व्याकरण (एक एसजीएमएल डीटीडी के रूप में) देता है, लेकिन मुझे नहीं पता कि आपको एसजीएमएल गिबर जेनरेटर लाइब्रेरी कहां मिलेगी ... – derobert

+0

पायथन के लिए एक डीटीडी पार्सर है: http://www.garshol.priv.no/download/software/xmlproc/dtd-parser-doco.html। – svick

उत्तर

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: वैकल्पिक responce – sixtyfootersdude

+0

पर्याप्त यादृच्छिक नहीं :) – karramba

+4

दुर्भाग्यवश कि याहू पृष्ठ अब मौजूद नहीं है। :-( –

संबंधित मुद्दे