पायथन का उपयोग करके अमेज़न उत्पाद उपलब्धता की जाँच करना

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

जैसा कि हम जानते हैं, पायथन एक बहुउद्देशीय भाषा है जिसका व्यापक रूप से स्क्रिप्टिंग के लिए उपयोग किया जाता है। इसका उपयोग केवल जटिल गणनाओं को हल करने तक ही सीमित नहीं है, बल्कि रोजमर्रा के कार्यों को स्वचालित करने तक भी सीमित है। मान लीजिए कि हम किसी भी अमेज़ॅन उत्पाद की उपलब्धता को ट्रैक करना चाहते हैं और उत्पाद की उपलब्धता में परिवर्तन होने पर एक सौदा बंद करना चाहते हैं, साथ ही ईमेल द्वारा उपलब्धता के बारे में उपयोगकर्ता को सूचित करना चाहते हैं। इसके लिए पायथन लिपि लिखने में बहुत मज़ा आएगा। ध्यान दें। स्क्रिप्ट चलाने से पहले आवश्यक पुस्तकालय (कोड के अनुसार) स्थापित करें। यह भी ध्यान दें कि यदि उत्पाद वर्तमान में उपलब्ध नहीं है, तो उपयोगकर्ता को कोई ईमेल नहीं भेजा जाएगा। उपयोगकर्ता द्वारा उस उत्पाद के लिए Asin Id प्रदान किया जाना चाहिए जिसे वे ट्रैक करना चाहते हैं।

उपयोग किए गए प्रत्येक मॉड्यूल का कार्य:
  • -> अनुरोध: HTTP प्राप्त करने और पोस्ट करने के लिए उपयोग किया जाता है अनुरोध
  • -> समय: वर्तमान समय, प्रतीक्षा, नींद को खोजने के लिए उपयोग किया जाता है
  • -> शेड्यूल: किसी फ़ंक्शन को अंतराल के बाद फिर से चलाने के लिए शेड्यूल करने के लिए उपयोग किया जाता है। यह जावास्क्रिप्ट में "setInterval‚" कार्यक्षमता के समान है।
  • -> smptlib: पायथन का उपयोग करके ईमेल भेजने के लिए प्रयुक्त।

# अमेज़ॅन उत्पाद उपलब्धता चेकर के लिए पायथन लिपि # एलएक्सएमएल से आयात पुस्तकालय आयात समय से एचटीएमएल आयात अनुरोध आयात नींद आयात समय आयात अनुसूची आयात smtplib # ईमेल आईडी जो उपलब्धता की जांच करना चाहते हैं रिसीवर_ईमेल_आईडी = "EMAIL_ID_OF_USER" def check(url): शीर्षलेख = {` User-Agent`: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, जैसे Gecko) Chrome/42.0.2311.90 Safari/537.36`} # हेडर जोड़ना यह दिखाने के लिए कि आप # एक ब्राउज़र हैं जो GET अनुरोध भेज रहा है पेज = रिक्वेस्ट.गेट (यूआरएल, हेडर्स = हेडर्स) आई इन रेंज (20): # क्योंकि # मिलीसेकंड या कुछ सेकंड में लगातार चेक # आपके अनुरोध को स्लीप (3) # html कंटेंट को पार्स करना doc = html.fromstring(पेज .content) # उपलब्धता की जांच XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) उपलब्ध ITY = ``.join(RAw_AVAILABILITY).strip() अगर RAw_AVAILABILITY और कोई नहीं लौटाता है, तो ईमेल (उत्तर, उत्पाद) के बाद उपलब्धता: GMAIL_USERNAME = "Your_GMAIL_ID" GMAIL_PASSWORD = "Your_GMAIL_PASSWORD" प्राप्तकर्ता = रिसीवर_ईमेल_आईडी ans ईमेल ` # SMTP सत्र बनाता है s = smtplib.SMTP(`smtp.gmail.com`, 587) # सुरक्षा के लिए TLS प्रारंभ करें s.starttls() # प्रमाणीकरण s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # हेडर भेजा जाने वाला संदेश = " " .join (["से:" + GMAIL_USERNAME, "विषय:" + ईमेल_विषय, "से:" + प्राप्तकर्ता, "माइम-संस्करण: 1.0", "सामग्री-प्रकार: टेक्स्ट/एचटीएमएल"]) सामग्री = शीर्षलेख + " " + body_of_email s.sendmail(GMAIL_USERNAME, प्राप्तकर्ता, सामग्री) s.quit() def ReadAsin(): # Asin Id वह उत्पाद Id है जिसे # उपयोगकर्ता Asin = `B077PWK5BT` url = "http:// द्वारा प्रदान करने की आवश्यकता है। www.amazon.in/dp/" + असिन प्रिंट ("प्रोसेसिंग:"+url) ans = check(url) arr = [`स्टॉक में केवल 1 बचा है।`, `स्टॉक में केवल 2 बचे हैं।`, `स्टॉक में .`] प्रिंट (उत्तर) यदि उत्तर गिरफ्तारी में है: # s उपयोगकर्ता को ईमेल समाप्त करना यदि # उत्पाद उपलब्ध होने की स्थिति में ईमेल (उत्तर, असिन) # हर 1 मिनट के बाद कई # बार चलाने के लिए एक ही कोड को शेड्यूल करना डीफ़ जॉब (): प्रिंट ("ट्रैकिंग ...") रीडएसिन () शेड्यूल। हर (1).minutes.do(job) जबकि True: # सभी पेंडिंग टास्क/जॉब्स शेड्यूल चलाना।run_pending() time.sleep(1) 

Output:

Tracking.. .. प्रसंस्करण: http://www.amazon.in/dp/B077PWK5BT स्टॉक में केवल 1 बचा है। ट्रैकिंग.... प्रोसेसिंग: http://www.amazon.in/dp/B077PWK5BT स्टॉक में केवल 1 बचा है। ट्रैकिंग.... प्रोसेसिंग: http://www.amazon.in/dp/B077PWK5BT स्टॉक में केवल 1 बचा है। 

यदि जावास्क्रिप्ट का उपयोग किया जाता है, तो पाइथन अनुरोधों के साथ स्टॉक उपलब्धता चेकर कैसे बनाएं?

स्टैक ओवरफ्लो प्रश्न

मैंने कुछ कोड लिखा है जो यह जांचना चाहिए कि कोई उत्पाद वापस स्टॉक में है या नहीं और कब है, मुझे सूचित करने के लिए मुझे एक ईमेल भेजें। यह तब काम करता है जब मैं जिन चीज़ों की तलाश कर रहा हूँ वे html में हैं।

हालाँकि, कभी-कभी कुछ वस्तुओं को जावास्क्रिप्ट के माध्यम से लोड किया जाता है। मैं अपना कोड कैसे संपादित कर सकता हूं ताकि वेब स्क्रैपिंग भी जावास्क्रिप्ट के साथ काम करे?

अब तक यह मेरा कोड है:

आयात समय आयात अनुरोध जबकि True: # IKEA पेज का url प्राप्त करें url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # उस पेज से टेक्स्ट प्राप्त करें और सब कुछ छोटे अक्षरों में रखें productpage = request.get(url).text.lower() # उन स्ट्रिंग्स को सेट करें जो पेज पर होनी चाहिए अगर उत्पाद उपलब्ध नहीं है outofstockstrings = [`niet beschikbaar voor लीवरिंग`, `aleen beschikbaar in de winkel `] # जांचें कि क्या तार हैं वेबपेज के टेक्स्ट में हैं अगर कोई भी(x इन उत्पाद पृष्ठ के लिए x इन आउटऑफ़स्टॉकस्ट्रिंग्स में): time.sleep(1800) जारी रखें और: # मुझे एक ईमेल भेजें और लूप तोड़ें 

उत्तर:

HTML को स्क्रैप करने और उसका विश्लेषण करने के बजाय आप अनौपचारिक स्टॉक का उपयोग कर सकते हैं एपीआई जो आईकेईए वेबसाइट भी उपयोग कर रही है। वह एपीआई JSON डेटा लौटाता है जिसका विश्लेषण करना आसान है और जब उत्पाद स्टॉक में वापस आ जाएगा तो आपको अनुमान भी मिल जाएगा।

यहां तक कि जावास्क्रिप्ट / नोड में लिखा गया एक प्रोजेक्ट भी है जो आपको इस तरह की जानकारी प्रदान करता है। सीधे कमांड लाइन से: https://github.com/Ephigenia/ikea-availability-checker< /a>

आप नीदरलैंड के सभी स्टोर में कुर्सी के स्टॉक की मात्रा आसानी से देख सकते हैं:

npx ikea-availability-checker stock --country nl 20336841