दिलचस्प पोस्ट
अजगर में मल्टीकास्ट केवल एक शाखा क्लोन करें कैसे विंडोज 8 रनटाइम (WinRT / विंडोज स्टोर ऐप / विंडोज़ 10 यूनिवर्सल ऐप) सिल्वरलाइट और डब्ल्यूपीएफ की तुलना में है? खिड़की के ओपन इवेंट की जांच करते हुए window.open के साथ खोला गया विंडोज: एक विस्तार से जुड़े सूची और लॉन्च अनुप्रयोग इनलाइन ब्लॉक क्यों इस div को ऊंचाई प्राप्त करने के लिए है? एंड्रॉइड लाइब्रेरी प्रोजेक्ट के अंदर कस्टम व्यू विशेषताएँ के साथ सहायता रूबी के साथ फाइल खोलें (ज़िप, राल, टैग.gz) टेम्पलेट आर्ग्यूमेंट कटौती यहाँ क्यों काम नहीं कर रहा है? एक इनलाइन फॉर्मसेट को पूर्व में जमा करें? मैं फिल्म के रूप में UIImage सरणी कैसे निर्यात करूं? जार मिस्केप निर्भरता सूची में एंड्रॉइड-समर्थन- v4.jar के 2 संस्करणों को मिला कैश लैटेंसी को मापना बाइनरी शाब्दिक? समान चौड़ाई के दो बटन सेट की सहायता की आवश्यकता

पायथन में PhantomJS का उपयोग करने का कोई तरीका है?

मैं पायथन में PhantomJS का उपयोग करना चाहता हूं। मैं इस समस्या को चला गया लेकिन उचित समाधान नहीं मिल सका।

मैं os.popen() मिल सकता है एक अच्छा विकल्प हो सकता है लेकिन मैं इसके लिए कुछ तर्क नहीं दे सकता था।

subprocess.Popen() का उपयोग करना। subprocess.Popen() अब के लिए उचित समाधान हो सकता है। मुझे यह जानना है कि बेहतर समाधान है या नहीं।

पायथन में PhantomJS का उपयोग करने का कोई तरीका है?

Solutions Collecting From Web of "पायथन में PhantomJS का उपयोग करने का कोई तरीका है?"

अजगर में PhantomJS का उपयोग करने का सबसे आसान तरीका सेलेनियम के माध्यम से है। सरल स्थापना विधि है

  1. नोडजेएस स्थापित करें
  2. नोड के पैकेज मैनेजर को फास्टॉमज का उपयोग करना: npm npm -g install phantomjs-prebuilt
  3. सेलेनियम स्थापित करें (यदि आप उस का उपयोग कर रहे हैं तो आपके वर्चुअलवेन में)

स्थापना के बाद, आप प्रेत का प्रयोग सरल रूप से कर सकते हैं:

 from selenium import webdriver driver = webdriver.PhantomJS() # or add to your PATH driver.set_window_size(1024, 768) # optional driver.get('https://google.com/') driver.save_screenshot('screen.png') # save a screenshot to disk sbtn = driver.find_element_by_css_selector('button.gbqfba') sbtn.click() 

यदि आपका सिस्टम पथ वातावरण चर सही ढंग से सेट नहीं है, तो आपको webdriver.PhantomJS() लिए तर्क के रूप में सटीक पथ निर्दिष्ट करना होगा। webdriver.PhantomJS() इसे बदलें:

 driver = webdriver.PhantomJS() # or add to your PATH 

… निम्नलिखित के साथ:

 driver = webdriver.PhantomJS(executable_path='/usr/local/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs') 

संदर्भ:

PhantomJS हाल ही में अजगर का समर्थन पूरी तरह से हटा दिया हालांकि, फांटमजेएस अब भूत ड्राइवर को एम्बेड करता है।

एक नई परियोजना के बाद से शून्य को भरने के लिए कदम उठाया गया है: ghost.py आप इसके बजाय इसका उपयोग करना चाहते हैं:

 from ghost import Ghost ghost = Ghost() with ghost.start() as session: page, extra_resources = ghost.open("http://jeanphi.me") assert page.http_status==200 and 'jeanphix' in ghost.content 

अब से GhostDriver PhantomJS के साथ बंडल आता है, यह सेलेनियम के माध्यम से इसका उपयोग करने के लिए और भी अधिक सुविधाजनक हो गया है।

मैंने फोंटमजेएस की नोड स्थापना की कोशिश की, जैसा कि पाक्लर द्वारा सुझाई गई थी, लेकिन प्रैक्टिस में मुझे फाँटॉमजेएस की स्टैंडअलोन स्थापना की तुलना में धीमी गति से पाया। मुझे लगता है कि स्टैंडअलोन इंस्टॉलेशन ने पहले इन सुविधाओं को प्रदान नहीं किया था, लेकिन v1.9 के अनुसार, यह बहुत ज्यादा ऐसा करता है।

  1. PhantomJS स्थापित करें ( http://phantomjs.org/download.html ) (यदि आप लिनक्स पर हैं, तो निम्न निर्देश https://stackoverflow.com/a/14267295/382630 में सहायता करेंगे)
  2. सेलेनियम पीआईपी का प्रयोग करें।

अब आप इस तरह से उपयोग कर सकते हैं

 import selenium.webdriver driver = selenium.webdriver.PhantomJS() driver.get('http://google.com') # do some processing driver.quit() 

फ़ैंटमजेएस और Django का उपयोग करते हुए मैं यहां जावास्क्रिप्ट का परीक्षण करता हूं:

मोबाइल / test_no_js_errors.js :

 var page = require('webpage').create(), system = require('system'), url = system.args[1], status_code; page.onError = function (msg, trace) { console.log(msg); trace.forEach(function(item) { console.log(' ', item.file, ':', item.line); }); }; page.onResourceReceived = function(resource) { if (resource.url == url) { status_code = resource.status; } }; page.open(url, function (status) { if (status == "fail" || status_code != 200) { console.log("Error: " + status_code + " for url: " + url); phantom.exit(1); } phantom.exit(0); }); 

मोबाइल / tests.py :

 import subprocess from django.test import LiveServerTestCase class MobileTest(LiveServerTestCase): def test_mobile_js(self): args = ["phantomjs", "mobile/test_no_js_errors.js", self.live_server_url] result = subprocess.check_output(args) self.assertEqual(result, "") # No result means no error 

परीक्षण चलाएं :

manage.py test mobile

यह मैं करता हूं, पायथन 3.3। मैं साइटों की बड़ी सूचियों का प्रसंस्करण कर रहा था, इसलिए पूरी सूची में चलने के लिए नौकरी के लिए समय समाप्ति पर असफल रहने के लिए महत्वपूर्ण था

 command = "phantomjs --ignore-ssl-errors=true "+<your js file for phantom> process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) # make sure phantomjs has time to download/process the page # but if we get nothing after 30 sec, just move on try: output, errors = process.communicate(timeout=30) except Exception as e: print("\t\tException: %s" % e) process.kill() # output will be weird, decode to utf-8 to save heartache phantom_output = '' for out_line in output.splitlines(): phantom_output += out_line.decode('utf-8') 

अगर एनाकोंडा का उपयोग कर, तो इनके साथ स्थापित करें:

 conda install PhantomJS 

आपकी स्क्रिप्ट में:

 from selenium import webdriver driver=webdriver.PhantomJS() 

अच्छी तरह से काम।

यदि आप बिल्डआउट का उपयोग कर रहे हैं, तो आप आसानी से इंस्टालेशन प्रक्रियाओं को स्वचालित कर सकते हैं जो कि पाक्लर ने जीपी.रेपीपी.नोड नुस्खा का उपयोग करने का वर्णन किया है।

 [nodejs] recipe = gp.recipe.node version = 0.10.32 npms = phantomjs scripts = phantomjs 

उस भाग ने node.js को द्विआधारी (कम से कम मेरे सिस्टम पर) के रूप में स्थापित किया है और फिर PhantomJS को स्थापित करने के लिए npm का उपयोग करता है अंत में यह एक प्रविष्टि बिन्दु bin/phantomjs बनाता है, जिसे आप फाँटॉमजेएस वेबड्रिवर को कॉल कर सकते हैं। (सेलेनियम स्थापित करने के लिए, आपको इसे अपनी अंडे की आवश्यकताओं में या बिल्डआउट कॉन्फ़िगरेशन में निर्दिष्ट करना होगा।)

 driver = webdriver.PhantomJS('bin/phantomjs') 

@ पिक्लर का जवाब बहुत अच्छा है लेकिन नोड की आवश्यकता पुरानी है। उस उत्तर की टिप्पणियों में सरल उत्तर का सुझाव दिया गया है, जिसे मैंने दूसरों के समय को बचाने के लिए रखा है:

  1. फाँटॉमजेएस स्थापित करें

    जैसा कि विवियन-पलियाथ बताते हैं, यह नोड का हिस्सा नहीं है, यह एक स्टैंडअलोन प्रोजेक्ट है।

    मैक:

     brew install phantomjs 

    उबंटू:

     sudo apt-get install phantomjs 

    आदि

  2. virtualenv सेट करें (यदि आपके पास पहले से नहीं है):

     virtualenv mypy # doesn't have to be "mypy". Can be anything. . mypy/bin/activate 

    यदि आपकी मशीन के पास पायथन 2 और 3 दोनों हैं, तो आपको virtualenv-3.6 mypy या इसी तरह की आवश्यकता हो सकती है।

  3. सेलेनियम स्थापित करें:

     pip install selenium 
  4. एक साधारण परीक्षण की कोशिश करें, जैसे डॉक्स से उधार लिया गया है:

     from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.PhantomJS() driver.get("http://www.python.org") assert "Python" in driver.title elem = driver.find_element_by_name("q") elem.clear() elem.send_keys("pycon") elem.send_keys(Keys.RETURN) assert "No results found." not in driver.page_source driver.close()