2012-05-12 8 views
6

मेरे पास रूपों वाली एक वेबसाइट है जो मुझे स्क्रैप की आवश्यकता है। flash रूपों को भरने के बजाय, मैं POST URL पर कुछ कुंजी/मान GET अनुरोधों का समर्थन नहीं करता हूं।जीयूआई के साथ पायथन में प्रोग्रामेटिक रूप से POST अनुरोध कैसे चलाएं? (स्पिनर, वेबकिट ...)

मैं spynner का उपयोग साइट के साथ बातचीत करने के लिए, और spynner एक GUI हो सकता है, लेकिन गूगल, stackoverflow, spynner GitHub पर और spynner मॉड्यूल में मेरे खोज असफल हो जाते हैं।

तो spynner एक POST अनुरोध, हो सकता है gtk या qt + webkit ऐसा कर सकते हैं नहीं कर सकते? किसी भी वास्तविक जीवन कोड नमूना वास्तव में सराहना की जाएगी।

+1

क्यूटी निश्चित रूप से है कि सुविधा है। [QWebFrame # लोड] पर एक नज़र डालें (http://doc.qt.nokia.com/4.7-snapshot/qwebframe.html#load-2) और [QNetworkRequest] (http://doc.qt.nokia.com/4.7- स्नैपशॉट /qnetworkrequest.html) –

उत्तर

5

आप Spynner के साथ इस तरह यह कर सकते हैं:

import spynner 
from PyQt4.QtCore import QUrl 
from PyQt4.QtNetwork import QNetworkRequest, QNetworkAccessManager 

url = "http://localhost:8080/niklas/test.php" 
data = "foo=bar" 
headers = { "Content-Type": "application/x-www-form-urlencoded" } 

req = QNetworkRequest(QUrl(url)) 
for k, v in headers.items(): 
    req.setRawHeader(k, v) 

browser = spynner.Browser() 
browser.webframe.load(req, QNetworkAccessManager.PostOperation, data) 
browser._wait_load() 

print browser.html 
+0

इस निकलास बी –

+2

के लिए बहुत बहुत धन्यवाद और यदि हम एक ही स्क्रिप्ट में एक और बार 'POST' करना चाहते हैं, तो वाक्यविन्यास क्या है? यदि मैं 'browser.webframe.load()' एक और बार चलाने की कोशिश करता हूं, तो मुझे निम्न त्रुटि मिलती है: "QNetworkReplyImplPrivate :: त्रुटि: आंतरिक समस्या, यह विधि केवल एक बार कॉल की जानी चाहिए।" –

+1

@sputnick: मुझे यह त्रुटि केवल तभी मिलती है जब मैं प्रतीक्षा के बिना पंक्ति में दो बार लोड करता हूं। क्या आपने बीच में '_wait_load()' कॉल किया था? –

संबंधित मुद्दे