2014-10-15 10 views
15

मैं पाइथन (http://docs.python-requests.org/en/latest/) के साथ अनुरोध फ्रेमवर्क का उपयोग करने की कोशिश कर रहा हूं, लेकिन जिस पृष्ठ को मैं चाहता हूं उसे प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग करने का प्रयास कर रहा हूं।जावास्क्रिप्ट पृष्ठों के साथ पाइथन अनुरोधों का उपयोग

मैंने समाधान के लिए वेब पर खोजने की कोशिश की है, लेकिन तथ्य यह है कि मैं खोजशब्द जावास्क्रिप्ट के साथ खोज कर रहा हूं, मुझे जो सामान मिल रहा है वह जावास्क्रिप्ट भाषा के साथ स्क्रैप करना है।

क्या जावास्क्रिप्ट का उपयोग करने वाले पृष्ठों के साथ अनुरोध ढांचे का उपयोग करने के लिए वैसे भी है?

उत्तर

18

आपको जावास्क्रिप्ट बना रहा है जो अनुरोध अनुरोध (अनुरोध पुस्तकालय का उपयोग कर) करना होगा। आप जावास्क्रिप्ट से आने वाले http अनुरोध का निरीक्षण करने के लिए किसी भी उपकरण (क्रोम और फ़ायरफ़ॉक्स में बनाए गए समेत) का उपयोग कर सकते हैं और यह अनुरोध स्वयं पाइथन से कर सकते हैं।

+0

तो वहाँ अनुरोध जावास्क्रिप्ट का उपयोग करने के लिए कोई रास्ता नहीं है। – Ben

+3

नहीं, अनुरोध एक http पुस्तकालय है। यह जावास्क्रिप्ट नहीं चला सकता है। – sberry

+4

आपने देखा और बेन को खोजने के लिए आपने किस टूल का उपयोग किया? मैं अभी यह कोशिश कर रहा हूं और मैं – codyc4321

6

जबकि सेलेनियम आकर्षक और उपयोगी प्रतीत हो सकता है, लेकिन इसमें एक मुख्य समस्या है जिसे ठीक नहीं किया जा सकता है: प्रदर्शन। ब्राउज़र की हर चीज की गणना करके, आपको बहुत अधिक शक्ति की आवश्यकता होगी। यहां तक ​​कि फैंटॉमजेएस भी एक साधारण अनुरोध के साथ प्रतिस्पर्धा नहीं करता है। मैं अनुशंसा करता हूं कि जब आप वास्तव में बटन क्लिक करने की आवश्यकता हो तो आप केवल सेलेनियम का उपयोग करेंगे। अगर आपको केवल जावास्क्रिप्ट की आवश्यकता है, तो मैं पीईक्यूटी की सिफारिश करता हूं (इसे जानने के लिए https://www.youtube.com/watch?v=FSH77vnOGqU देखें)।

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

सबसे पहले, सुनिश्चित करें कि आपने ChromeDriver इंस्टॉल किया है, जो सेलेनियम Google क्रोम का उपयोग करने के लिए निर्भर करता है।

उसके बाद, आप संस्करण 60 की गूगल क्रोम है या यूआरएल क्रोम में चेक करके उसे उच्च सुनिश्चित करें:

from selenium.webdriver.chrome.options import Options 
from selenium import webdriver 

chrome_options = Options() 
chrome_options.add_argument("--headless") 

driver = webdriver.Chrome(chrome_options=chrome_options) 
: // settings/मदद

अब, तुम सब करने की जरूरत है निम्नलिखित कोड है

driver.get("https://www.google.com") #Browser goes to google.com 

ढूँढना तत्वों: या तो तत्व या तत्व विधि उपयोग

आप कैसे सेलेनियम का उपयोग करने को नहीं जानते हैं, यहाँ एक त्वरित अवलोकन है। उदाहरण:

driver.find_element_by_css_selector("div.logo-subtext") #Find your country in Google. (singular) 
  • driver.find_element (रों) _by_css_selector (css_selector) # प्रत्येक तत्व निम्न वर्ग के साथ इस सीएसएस चयनकर्ता से मेल खाता
  • driver.find_element (रों) _by_class_name (CLASS_NAME) # प्रत्येक तत्व
  • driver.find_element (रों) _by_id (आईडी) # निम्नलिखित आईडी के साथ प्रत्येक तत्व
  • driver.find_element (रों) _by_link_text (LINK_TEXT) # पूर्ण लिंक पाठ
  • driv साथ हर er.find_element (by) _by_partial_link_text (partial_link_text) # प्रत्येक आंशिक लिंक टेक्स्ट के साथ।
  • driver.find_element (रों) _by_name (नाम) # प्रत्येक तत्व जहां नाम = तर्क
  • driver.find_element (रों) _by_tag_name (TAG_NAME) # टैग नाम तर्क

ठीक है के साथ प्रत्येक तत्व! मुझे एक तत्व (या तत्व सूची) मिला। लेकिन अब मैं क्या करूँ?

  • elem.tag_name # एक में वापसी कर सके बटन:

    यहाँ तरीकों एक तत्व ELEM पर आप कर सकते हैं।

  • elem.get_attribute ("id") # किसी तत्व की आईडी लौटाता है।
  • elem.text # किसी तत्व का आंतरिक पाठ।
  • elem.clear() # एक टेक्स्ट इनपुट साफ़ करता है।
  • elem.is_displayed() # दृश्य तत्वों के लिए सही, अदृश्य तत्वों के लिए झूठा।
  • elem.is_enabled() # सक्षम इनपुट के लिए सही है, अन्यथा गलत।
  • elem.is_selected() # क्या यह रेडियो बटन या चेकबॉक्स तत्व चुना गया है?
  • elem.location # स्क्रीन पर किसी तत्व के एक्स और वाई स्थान का प्रतिनिधित्व करने वाला एक शब्दकोश।
  • elem.click() # elem पर क्लिक करें।
  • elem.send_keys ("thelegend27") # ELEM (पाठ आदानों के लिए उपयोगी) में टाइप thelegend27
  • elem.submit() # रूप है जिसमें ELEM भाग लेता जमा करें।

विशेष कमांड:

  • driver.back() # वापस बटन क्लिक करें।
  • driver.forward() # फॉरवर्ड बटन पर क्लिक करें।
  • driver.refresh() # पृष्ठ को रीफ्रेश करें।
  • driver.quit() # सभी टैब सहित ब्राउज़र बंद करें।
  • foo = driver.execute_script ("वापसी 'हैलो';") # निष्पादित जावास्क्रिप्ट (चुन सकता है मानों को लेकर!)
संबंधित मुद्दे