2011-08-15 15 views
5

शामिल एचटीएमएल का विश्लेषण कैसे करें जावास्क्रिप्ट का भारी उपयोग करने वाले एचटीएमएल दस्तावेज़ों का विश्लेषण कैसे करता है? मुझे पता है कि अजगर में कुछ पुस्तकालय हैं जो स्थैतिक एक्सएमएल/एचटीएमएल फाइलों को पार्स कर सकते हैं और मैं मूल रूप से प्रोग्राम या लाइब्रेरी (या यहां तक ​​कि फ़ायरफ़ॉक्स प्लगइन) की तलाश कर रहा हूं जो एचटीएमएल + जावास्क्रिप्ट पढ़ता है, जावास्क्रिप्ट बिट निष्पादित करता है और जावास्क्रिप्ट के बिना एचटीएमएल कोड आउटपुट करता है तो ब्राउज़र में प्रदर्शित होने पर यह समान दिखता है।जावास्क्रिप्ट कोड

एक सरल उदाहरण

<a href="javascript:web_link(34, true);">link</a> 

के रूप में उचित मान जावास्क्रिप्ट समारोह रिटर्न, उदा प्रतिस्थापित किया जाना चाहिए

<a href="http://www.example.com">link</a> 

एक और जटिल उदाहरण एक सहेजा गया फेसबुक HTML पृष्ठ होगा जो जावास्क्रिप्ट कोड के भार से भरा हुआ है।

शायद How to "execute" HTML+Javascript page with Node.js से संबंधित है, लेकिन क्या मुझे वास्तव में Node.js और JSDOM की आवश्यकता है? इसके अलावा थोड़ा सा संबंधित Python library for rendering HTML and javascript है लेकिन मुझे केवल शुद्ध HTML आउटपुट प्रस्तुत करने में रूचि नहीं है।

+0

या तो एक जावास्क्रिप्ट क्रम मिलता है और इसके साथ कुछ सुलझा, या कोड का विश्लेषण करें और यह बताएं कि यह क्या खत्म हो रहा है (दृढ़ता से प्रति-साइट कॉन्फ़िगरेशन)। –

+0

http://stackoverflow.com/questions/19465510/how-to-parse-a-webpage-that-includes-javascript?rq=1 – gliptak

उत्तर

2

Mozilla Gecko FAQ से:

प्र आप एक यूनिक्स खोल स्क्रिप्ट से जेको इंजिन आह्वान कर सकते हैं? क्या आप इसे HTML भेज सकते हैं और एक वेब पेज वापस प्राप्त कर सकते हैं जिसे प्रिंटर पर भेजा जा सकता है?

ए वास्तव में समर्थित नहीं है; हालांकि, आप संभवतः गीको के एम्बेडिंग एपीआई का उपयोग करके अपने स्वयं के एप्लिकेशन लिखकर जो चाहते हैं उसके करीब कुछ प्राप्त कर सकते हैं। ध्यान दें कि वर्तमान में स्क्रीन पर विजेट के बिना प्रिंट करने के लिए प्रिंट करना संभव नहीं है।

Embedding Gecko जो प्रोग्राम आप चाहते हैं उसे आउटपुट करने में बहुत अधिक भारी हो सकता है, लेकिन कम से कम आपका आउटपुट जितना अच्छा होगा उतना अच्छा होगा।

+0

यह नुस्खा भी जोड़ सकता है: http://siliconforks.com/doc/parsing -javascript-साथ-Spidermonkey / –

3

आप विस्तृत here

उदाहरण के रूप में अजगर के साथ Selenium उपयोग कर सकते हैं:

import xmlrpclib 

# Make an object to represent the XML-RPC server. 
server_url = "http://localhost:8080/selenium-driver/RPC2" 
app = xmlrpclib.ServerProxy(server_url) 

# Bump timeout a little higher than the default 5 seconds 
app.setTimeout(15) 

import os 
os.system('start run_firefox.bat') 

print app.open('http://localhost:8080/AUT/000000A/http/www.amazon.com/') 
print app.verifyTitle('Amazon.com: Welcome') 
print app.verifySelected('url', 'All Products') 
print app.select('url', 'Books') 
print app.verifySelected('url', 'Books') 
print app.verifyValue('field-keywords', '') 
print app.type('field-keywords', 'Python Cookbook') 
print app.clickAndWait('Go') 
print app.verifyTitle('Amazon.com: Books Search Results: Python Cookbook') 
print app.verifyTextPresent('Python Cookbook', '') 
print app.verifyTextPresent('Alex Martellibot, David Ascher', '') 
print app.testComplete() 
0

PhantomJS का उपयोग कर लोड किया जा सकता Selenium

$ ipython 

In [1]: from selenium import webdriver 

In [2]: browser=webdriver.PhantomJS() 

In [3]: browser.get('http://seleniumhq.org/') 

In [4]: browser.title 
Out[4]: u'Selenium - Web Browser Automation' 
संबंधित मुद्दे