2012-01-22 4 views
24

में जावास्क्रिप्ट के साथ जेनरेट किया गया पृष्ठ प्राप्त करें, मैं Javascript द्वारा उत्पन्न वेब पेज डाउनलोड करना चाहता हूं और इसे Python कोड में स्ट्रिंग चर में संग्रहीत करना चाहता हूं। जब आप बटन पर क्लिक करते हैं तो पृष्ठ उत्पन्न होता है।पायथन

यदि मैं परिणामस्वरूप यूआरएल जानता हूं तो मैं urllib2 का उपयोग करूंगा लेकिन ऐसा नहीं है।

धन्यवाद

+0

इस js में पूरी तरह से उत्पन्न या सिर्फ एक ajax कॉल से बनाया गया है? –

+0

@ ई-सैटिस मुझे लगता है कि यह पूरी तरह से जेएस – xralf

+0

में है तो मुझे जेएफ समाधान, या पायथन वेबकिट के साथ मिल जाएगा। बस ध्यान रखें कि उन्हें एक प्रदर्शन सर्वर चलाने की आवश्यकता है ताकि यदि आप इसे हेडलेस सर्वर पर चलाने की योजना बना रहे हैं, तो आपको थोड़ा सा हैक करना होगा। –

उत्तर

34

आप Selenium Webdriver इस्तेमाल कर सकते हैं:

#!/usr/bin/env python 
from contextlib import closing 
from selenium.webdriver import Firefox # pip install selenium 
from selenium.webdriver.support.ui import WebDriverWait 

# use firefox to get page with javascript generated content 
with closing(Firefox()) as browser: 
    browser.get(url) 
    button = browser.find_element_by_name('button') 
    button.click() 
    # wait for the page to load 
    WebDriverWait(browser, timeout=10).until(
     lambda x: x.find_element_by_id('someId_that_must_be_on_new_page')) 
    # store it to string variable 
    page_source = browser.page_source 
print(page_source) 
+3

'webDriverWait' है 'someId_that_must_be_on_new_page' निरंतर? क्या यह केवल कुछ 'नींद' या 'देरी' समारोह के साथ किया जा सकता है? और क्या उपयोगकर्ता-एजेंट स्ट्रिंग सेट करना संभव है? – xralf

+0

अभी तक एक समस्या है। वेब पेज पर 'select' तत्व है और कुछ को चुना जाना है। अगर कुछ भी नहीं चुना गया है तो बटन काम नहीं करेगा। और फ़ायरफ़ॉक्स खोलने और बंद करने के लिए निरंतर है? 'गिट' के बिना यह काम नहीं करेगा? – xralf

+0

आप अपनी पसंद की किसी भी शर्त का उपयोग कर सकते हैं उदा।, 'X.title ==' नया शीर्षक''। आप उचित फ़ायरफ़ॉक्स प्रोफाइल का उपयोग करके उपयोगकर्ता-एजेंट को संशोधित कर सकते हैं। – jfs