मैं एक वेब ऐप लिख रहा हूं जो सेलेनियम का उपयोग दूसरी वेबसाइट को स्क्रैप करने के लिए करता है। यह स्क्रीन-स्क्रैपिंग केवल दिन में एक बार होती है, इसलिए मैं हर समय सेलेनियम और एक्सवीएफबी को नहीं छोड़ूंगा।पायथन में उपप्रोसेस मॉड्यूल का उपयोग करके मैं एक लिनक्स प्रोग्राम कैसे शुरू और बंद कर सकता हूं?
मैं समझने की कोशिश कर रहा हूं कि पाइथन से एक्सवीएफबी और सेलेनियम कैसे शुरू करें, और फिर स्क्रीन-स्क्रैपिंग के बाद उन्हें रोक दें।
अगर मैं इसे मैन्युअल रूप से कर रहा था, मैं उन्हें आदेश पंक्ति पर प्रारंभ करें, और CTRLसी मारा उन्हें रोकने के लिए चाहते हैं। मैं पाइथन से वही काम करने की कोशिश कर रहा हूं।
मैं सफलतापूर्वक इस तरह Xvfb शुरू करने में सक्षम होने लगते हैं:
xvfb = Popen('Xvfb :99 -nolisten tcp', shell=True)
लेकिन इसे समाप्त जब मैं कोशिश की है करने के लिए:
xvfb.terminate()
और फिर इसे शुरू करने के लिए फिर से (दोहराते हुए की कोशिश की मेरा प्रारंभिक आदेश), यह मुझे बताता है कि यह पहले से चल रहा है।
यह पांच अपवॉट प्राप्त करता है? मैंने माना कि मैं वास्तव में बेवकूफ था! –
'xvfb.wmin()' 'xvfb.terminate()' के बाद कोशिश करें। विफल होने पर, 'xvfb.kill() 'आज़माएं। –
Ctrl-C एक यूनिक्स प्रक्रिया में SIGTERM भेजता है। आपकी उपयोगकर्ता पायथन प्रक्रिया आपके Xvfb को रूट के रूप में चलने के लिए SIGTERM नहीं भेज सकती है। अपने बच्चे की पिड प्राप्त करें, "सुडो मार" निष्पादित करें, फिर "xvfb.wait()"। –