2012-10-31 10 views
7

का उपयोग कर प्रस्तुत मैं इस एचटीएमएल है:प्रकार पाठ और प्रेस के इनपुट भरें अजगर

<input type="text" class="txtSearch"> 
<input type="submit" value="Search" class="sbtSearch"> 

क्या मैं जरूरत पाठ क्षेत्र में लिख सकते हैं और उसके बाद अजगर का उपयोग कर सबमिट पर क्लिक करना है। इनपुट टैग फार्म अंदर नहीं हैं। मैं यह कैसे कर सकता था?

+0

मैंने Google पर खोजने की कोशिश की लेकिन मुझे कोई आसान उदाहरण नहीं मिला ... मुझे लगता है कि मुझे लगता है कि लंबे दस्तावेज हैं जो मुझे समझ में नहीं आ रहा था ... मुझे लगता है कि मुझे मैकेनाइजेशन का उपयोग करने की आवश्यकता है लेकिन इसकी आवश्यकता है फॉर्म ... मुझे आपको क्या दिखाना चाहिए? – a1204773

उत्तर

12

आप वास्तव में खानों को भरने और 'क्लिक' नहीं करना चाहिए सबमिट करें। आप सबमिशन अनुकरण कर सकते हैं और वांछित परिणाम प्राप्त कर सकते हैं।

उपयोग BeautifulSoup और urllib फ़ायरफ़ॉक्स में फ़ायरबग के साथ। फ़ायरबग साथ नेटवर्क यातायात देखें, और HTTP POST से पोस्ट पैरामीटर प्रस्तुत मिल डोंग है। एक ताना और यूआरएल-एन्कोड बनाएं। अपने यूआरएल अनुरोध के साथ इसे पास करें।

उदाहरण के लिए:

from BeautifulSoup import BeautifulSoup 
import urllib 

post_params = { 
    param1 : val1, 
    param2 : val2, 
    param3 : val3 
     } 
post_args = urllib.urlencode(post_params) 

url = 'http://www.website.com/' 
fp = urllib.urlopen(url, post_args) 
soup = BeautifulSoup(fp) 

परम Vals आप प्रस्तुत करने के लिए प्रयास कर रहे हैं क्या के अनुसार बदल जाएगा। अपने कोड में उचित आवास बनाओ।

5

यहाँ एक सेलेनियम समाधान करता है, तो आप वास्तव में खानों को भरने की जरूरत है। आप आमतौर पर केवल इस परीक्षण प्रयोजनों के लिए है, हालांकि की आवश्यकता होगी।

from selenium import webdriver 

webpage = r"https://www.yourwebsite.com/" # edit me 
searchterm = "Hurricane Sandy" # edit me 

driver = webdriver.Chrome() 
driver.get(webpage) 

sbox = driver.find_element_by_class_name("txtSearch") 
sbox.send_keys(searchterm) 

submit = driver.find_element_by_class_name("sbtSearch") 
submit.click() 
संबंधित मुद्दे