2013-04-09 9 views
11

मैं कुछ वेबसाइटों को स्क्रैप कर रहा हूं जो इसके खिलाफ बहुत अच्छी सुरक्षा मानते हैं। एकमात्र तरीका यह है कि मैं इसे काम करने के लिए प्राप्त कर सकता हूं सेलेनियम का उपयोग पृष्ठ लोड करने के लिए करना है और उसके बाद सामान को स्क्रैप करना है।सर्वर पर फ्लेस्क/पायथन/हेरोकू) सेलेनियम ब्राउज़र चल रहा है

वर्तमान में यह मेरे स्थानीय कंप्यूटर पर काम करता है (जब मैं अपने पृष्ठ तक पहुंचता हूं तो फ़ायरफ़ॉक्स विंडो खुलती है और बंद होती है और यह HTML मेरी स्क्रिप्ट में आगे संसाधित होती है)। हालांकि, मुझे वेब पर पहुंचने के लिए अपने स्क्रैपर की आवश्यकता है। स्क्रैपर हेरोोकू पर फ्लास्क ऐप के भीतर एम्बेडेड है। सेलेनियम ब्राउज़र को हेरोकू सर्वर पर काम करने का कोई तरीका है? या क्या कोई होस्टिंग प्रदाता हैं जहां यह काम कर सकता है?

उत्तर

11

हेरोकू, जैसा कि अद्भुत है, उसमें एक बड़ी सीमा है जिसमें कस्टम सॉफ्टवेयर या कई मामलों में, पुस्तकालयों का उपयोग नहीं किया जा सकता है। उपयोग में आसान, केंद्रीय नियंत्रित, प्रबंधित ढेर प्रदान करने में, हेरोोकू अन्य उपयोगों को रोकने के लिए अपने सर्वर को नीचे स्ट्रिप्स करता है।

यह क्या उबलता है कि हेरोकू डिनो पर कोई ज़ोरग नहीं है। एक्सॉर्ग की कमी और कस्टम सॉफ़्टवेयर स्थापित करने की क्षमता की कमी का मतलब है कि कोई xvfb नहीं है, और ब्राउज़र को चलाने की कोई क्षमता नहीं है जो सेलेनियम मौजूद होने की अपेक्षा करता है। इसके अलावा, ब्राउज़र आम तौर पर उपलब्ध नहीं है।

एडब्ल्यूएस जैसे क्लाउड ऑफरिंग के साथ आपको बेहतर भाग्य मिलेगा, जहां आप फ़ायरफ़ॉक्स, एक्सवीएफबी (सभी एक्सर्ग ओवरहेड की आवश्यकता से बचने के लिए) और निश्चित रूप से अपने बाकी स्क्रैपिंग स्टैक सहित कस्टम सॉफ़्टवेयर इंस्टॉल कर सकते हैं। This answer बताता है कि इसे ठीक से कैसे किया जाए।

1

हेरोकू पर सेलेनियम काम करने के लिए बिल्डपैक हैं।

बिल्डपैक के नीचे जोड़ें।

1) heroku buildpacks:add https://github.com/kevinsawicki/heroku-buildpack-xvfb-google-chrome/ 
2) heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver 

और सेट Heroku जिन्हें आप नीचे देख देवदार-14 के लिए ढेर, xvfb buildpack केवल देवदार-14 के साथ काम करता है।

heroku stack:set cedar-14 -a stocksdata 

फिर नीचे के रूप में गूगल क्रोम स्थान इंगित

options = ChromeOptions() 
options.binary_location = "/app/.apt/usr/bin/google-chrome-stable" 
driver = webdriver.Chrome(chrome_options=options) 
संबंधित मुद्दे