2016-07-11 6 views
0

Ich versuche, die Anfragefunktion in Python zu verwenden, um den Textinhalt einer Textdatei auf einer Website zu posten, den Text zur Analyse auf der Website einzureichen und ziehe die Ergebnisse zurück nach Python. Ich habe eine Reihe von Antworten hier und auf anderen Websites gelesen, habe aber noch nicht herausgefunden, wie der Code auf einer neuen Website korrekt geändert werden kann.Verwenden von Anfragefunktionen in Python, um Daten an eine Website zu senden und eine Antwort zurückzurufen

Ich bin vertraut mit schönen Suppe so ziehen in der Webseite Inhalt und Entfernen von HTML ist kein Problem, es ist das Einreichen der Daten, die ich nicht verstehe.

Mein Code zur Zeit ist:

import requests 

fileName = "texttoAnalyze.txt"   
fileHandle = open(fileName, 'rU'); 
url_text = fileHandle.read() 

url = "http://www.webpagefx.com/tools/read-able/" 
payload = {'value':url_text} 
r = requests.post(url, payload) 
print r.text 

Dieser Code mit dem HTML-Code der Webseite kommt zurück, hat aber nicht die Tatsache erkannt, dass ich ein Formular ein vorlegen bin versucht.

Jede Hilfe wird geschätzt. Vielen Dank.

+2

'url = "http://www.webpagefx.com/tools/read-able/"' ist ein Web-Link was uns auf eine Webseite weiterleitet, einfach einige Daten zu veröffentlichen, bringt Sie nicht zu den gewünschten Ergebnissen. Sie müssen die API-Aufrufe, die die Webseite zur Bearbeitung Ihrer Anfrage macht (Erfahren Sie mit der Element-Funktion in allen gängigen Browsern) benutze Headless websurfing mit dem 'Selenium' Modul von Python – ZdaR

+0

@JonClements, der zweite Arg zum Posten ist Daten –

+1

@Padraic Du hast Recht - vielleicht denke ich an etwas Hing sonst oder ein anderer Anwendungsfall :) –

Antwort

0

Sie müssen die gleiche Anfrage senden, die die Website sendet, normalerweise können Sie diese mit Web-Debugging-Tools (wie Chrome/Firefox-Entwickler-Tools) erhalten.

In diesem Fall wird die URL der Anfrage gesendet wird: http://www.webpagefx.com/tools/read-able/check.php

Mit den folgenden params: tab=Test+by+Direct+Link&directInput=SOME_RANDOM_TEXT

Ihr Code wie folgt aussehen So sollte:

url = "http://www.webpagefx.com/tools/read-able/check.php" 
payload = {'directInput':url_text, 'tab': 'Test by Direct Link'} 
r = requests.post(url, data=payload) 
print r.text 

Viel Glück!

0

Es gibt zwei Post-Parameter, Registerkarte und Direct:

import requests 

post = "http://www.webpagefx.com/tools/read-able/check.php" 
with open("in.txt") as f: 
    data = {"tab":"Test by Direct Link", 
      "directInput":f.read()} 
    r = requests.post(post, data=data) 
    print(r.content) 
Verwandte Themen