2011-12-19 11 views
14

से साइन आउट मेरी तलाश अब मैं एक वेबसाइट मैं अक्सर करने के लिए प्रवेश करने का प्रयास कर रहा हूँ अजगर में बेहतर बनने के लिए के हिस्से के रूप के लिए, अपने आप को एक निजी संदेश, और फिर संकेत भेज बाहर। अब तक, मैंने साइन इन करने में कामयाब रहा है (urllib, cookiejar और urllib2 का उपयोग करके)। हालांकि, मैं खुद को एक संदेश भेजने के लिए आवश्यक फॉर्म भरने के लिए कैसे काम नहीं कर सकता।अजगर का उपयोग करना, वेबसाइट में प्रवेश एक के रूप में भरने, तो

रूप /messages.php?action=send में स्थित है। संदेश भेजने के लिए तीन चीजें भरने की आवश्यकता है: नाम, शीर्षक और संदेश नामक तीन टेक्स्ट फ़ील्ड। इसके अतिरिक्त, एक सबमिट बटन है (नाम "सबमिट")।

मैं इस रूप में कैसे को भरने और भेज सकते हैं?

+0

([Python स्क्रिप्ट (परीक्षण नहीं) के माध्यम से एक वेब पेज में भरें प्रपत्र मूल्यों] के संभावित डुप्लिकेट http://stackoverflow.com/questions/1555234/fill-form-values-in-a-web -page-through-a-python-script-not-test) – ravi404

उत्तर

11
import urllib 
import urllib2 

name = "name field" 
data = { 
     "name" : name 
     } 

encoded_data = urllib.urlencode(data) 
content = urllib2.urlopen("http://www.abc.com/messages.php?action=send", 
     encoded_data) 
print content.readlines() 

सिर्फ यूआरएल जहाँ आपके प्रपत्र अपनी टिप्पणी को प्रस्तुत की जा रही है

जबाब साथ http://www.abc.com/messages.php?action=send बदल देते हैं: यदि यूआरएल यूआरएल जहाँ आपके प्रपत्र स्थित है है, और आप सिर्फ एक वेबसाइट के लिए ऐसा करने की जरूरत , पृष्ठ के स्रोत कोड को देखो और

<form method="POST" action="some_address.php"> 

खोजने के लिए और के लिए urllib2.urlopen

एक पैरामीटर के रूप में यह पता कर दिया आपको पता होना चाहिए कि submit बटन क्या करता है। यह सिर्फ यूआरएल के रूप में action द्वारा परिभाषित करने के लिए एक Http अनुरोध भेजें। तो तुम क्या urllib2

+0

हूप, क्षमा करें। यह वह पृष्ठ है जहां फॉर्म स्थित है। (अगली टिप्पणी में जारी मेरे मूर्ख आइपॉड के लिए धन्यवाद) – Matthew

+0

(जारी) धन्यवाद! ऐसा लगता है कि यह काम करेगा। मैं इसे सुबह में आज़माउंगा - क्या वह फॉर्म भी सबमिट करेगा, या मुझे "सबमिट" के लिए डेटा सूची में कुछ डालना होगा? – Matthew

+0

मैंने जवाब –

7

के साथ इस अनुरोध को दिखाने का आप mechanize पुस्तकालय चाहते हैं। यह आपको वेबसाइटों को ब्राउज़ करने और फ़ॉर्म/निम्नलिखित लिंक सबमिट करने की प्रक्रिया को आसानी से स्वचालित करने देता है। जिस साइट से मैंने लिंक किया है वह काफी अच्छे उदाहरण और दस्तावेज़ीकरण है।

+0

संपादित करके जवाब दिया: डी मुझे अब इंस्टॉल हो गया है, मेरे पास इसके साथ एक खेल होगा! धन्यवाद: डी – Matthew

1

किए गए अनुरोधों को पूरा करने का प्रयास करें (उदा। क्रोम वेब डेवलपर टूल या फ़ायरफ़ॉक्स/फ़ायरबग के साथ) और वांछित फॉर्म डेटा वाले POST अनुरोध की नकल करें।

एंड्रयू ने उल्लेख किया महान मशीनीकरण पुस्तकालय के अलावा, इस मामले में मैं यह भी सुझाव देंगे आप BeautifulSoup का उपयोग एचटीएमएल पार्स करने के लिए।

यदि आप मशीनीकरण का उपयोग नहीं करना चाहते हैं, लेकिन फिर भी HTTP अनुरोध बनाने के लिए एक आसान, साफ समाधान चाहते हैं, तो मैं उत्कृष्टता requests मॉड्यूल की अनुशंसा करता हूं।

3

आप इस के साथ आसानी से काम करने के लिए मशीनीकरण उपयोग कर सकते हैं। यह फ़ॉर्म जमा करने के आपके काम को कम करेगा। एचटीएमएल फॉर्म के स्रोत कोड को देखकर नाम, शीर्षक, संदेश जैसे पैरामीटर से जांचना न भूलें।

import mechanize 
br = mechanize.Browser() 
br.open("http://mywebsite.com/messages.php?action=send") 
br.select_form(nr=0) 
br.form['name'] = 'Enter your Name' 
br.form['title'] = 'Enter your Title' 
br.form['message'] = 'Enter your message' 
req = br.submit()