2016-06-13 11 views
1

Ist es möglich, mehrere HTTP-POST-Anfragen an einen Server mit Selenic Webdriver zu senden?Python: Senden Sie mehrere POST-Anfragen auf der gleichen Seite

Wenn zum Beispiel die Benutzer-IDs automatisch erhöht sind und die ersten 1000 Anhänger hatten mir gefolgt, wäre es möglich, so etwas wie die folgenden auf einer Website zu laufen, wo POST-Anfragen zurückgeben nicht einen Reload:

* * Die Website erfordert offensichtlich, dass der Benutzer für solche Aktionen angemeldet ist, daher der Selen-Ansatz.

driver = webdriver.Firefox() 
driver.get("http://example.com/myfollowers") 

for userid in range(1, 1001): 
    driver.post("http://example.com/unfollow/{}".format(userid)) 

driver.close() 

Im Folgenden ist ein Ausschnitt Beispiel der Anfrage Beitrag einem Ort gemacht.

General: 
Request URL:http://example.com/unfollow/1 
Request Method:POST 
Status Code:200 OK 
Remote Address:192.168.1.1:80 
Response Headers 

Request headers: 
Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript 
Accept-Encoding:gzip, deflate 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Length:0 
Cookie:ob-i=1; 
Host:example.com 
Origin:http://example.com 
Referer:http://example.com/user/followings 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.26.02 Safari/537.36 
X-Requested-With:XMLHttpRequest 

Antwort

0

Warum sollte es nicht funktionieren?

"wo POST-Anfragen kein Nachladen zurückgeben" Bitte erläutern Sie, was Sie damit meinen!

Wie auch immer, requests scheint für diese Aufgabe besser geeignet zu sein:

Hier ist ein einfaches Beispiel:

import requests 

r = requests.get("http://example.com/myfollowers") 
print("myfollowers returned: " + r.content) 

for userid in range(1, 1001): 
    r = requests.post("http://example.com/unfollow/{}".format(userid)) 
    print("unfollow returned: " + r.content) 
+1

von nicht Reload ich meine Rückkehr, dass es sich um ein nicht ein Formular einreichen und zurück Seitenaktualisierung/neue Seite (das Programm kann weiterhin auf derselben Registerkarte ausgeführt werden, ohne auf eine Serverantwort zu warten). – AK47

+0

Dann wird das noch funktionieren. 'r.content' in der letzten Zeile ist leer. –

0

weiß nicht, wie man es mit Selen-Web-Treiber macht. Sie können jedoch mehrere Postanforderungen mit AJAX senden. Seine recht einfache Sprache können Sie innerhalb von 2 Tagen lernen, wenn Sie ein wenig Javascript kennen. Sie können es von w3schools lernen Versuchen Sie es.