2017-04-21 3 views
0

Ich versuche den Prozess der Übergabe von Text von einer Website an ein Tool zu automatisieren, um den geschätzten Leselevel des Textes zu erhalten. Wenn ich jedoch den URL-kodierten Text über eine Post-Methode übergebe, erhalte ich eine 400-Fehler-Anfrage.Fehler 400 mit Requests libary

article = 'The quick brown fox jumps over the lazy dog.' 
headers = ({'Host': 'auto-ilr.ll.mit.edu', 
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0', 
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language': 'en-US,en;q=0.5', 
    'Accept-Encoding': 'gzip, deflate', 
    'DNT': '1', 
    'Referer': 'https://auto-ilr.ll.mit.edu/instant/', 
    'Connection': 'keep-alive'}) 
s = requests.Session() 
#s.mount('https://', SSLAdapter()) 
s.mount('https://', MyAdapter()) 
try: 
    postdata = urllib.parse.urlencode({'Language': 'English', 'Text': article}) 
    soup = s.post('https://auto-ilr.ll.mit.edu/instant/summary3', data=postdata, headers = headers, verify=False) 

Ich bin mir nicht sicher, was der Unterschied ist, aber es gibt einige Fälle, in denen die Anfrage durch und die letzte Suppe Variable mit dem Text von der Website beendet gegangen ist, aber es war Text der Website zeigt, tat verarbeite den Text nicht richtig.

Ich habe das Gefühl, ich vermisse etwas Einfaches.

Antwort

1

Sie sind etwas fehlt einfach, Sie müssen nicht data kodieren, requests bedeutet es für Sie:

article = 'The quick brown fox jumps over the lazy dog.' 
headers = { 
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0', 
    'Referer': 'https://auto-ilr.ll.mit.edu/instant/' 
} 
postdata = {'Language': 'English', 'Text': article} 
s = requests.Session() 
soup = s.post('https://auto-ilr.ll.mit.edu/instant/summary3', data=postdata, headers = headers, verify=False) 

print(soup.status_code) 

Auch Sie nicht alle Header senden, Mabe nur ‚User- Agent 'oder' Referer 'manchmal.