Die meisten API-Zugriffspunkte auf dieser Site scheinen beschädigt zu sein. Es ist nichts falsch mit Ihrem Code per se. Ich kann nicht die Website tatsächlich auf Anfragen in ihrem eigenen Webinterface reagieren, auch wenn Sie einen normalen Browser verwenden.
Die main API documentation Details (in Französisch), dass Sie auch die SOAP protocol verwenden können, um Abfragen zu erstellen; Python hat several SOAP client libraries Sie könnten wählen.
Allerdings hatte ich kein Glück, das zu arbeiten entweder. Mit der ausgezeichneten zeep
library Ich habe versucht, die einfachere GetMainCarMakeListByFirstDrivingDate
endpoint (Anmerkung, dass ich ein datetime()
Objekt verwenden musste, um den Zeitstempel zu modellieren) zuzugreifen:
>>> from zeep import Client
>>> client = Client('https://www.assurland.com/ws/CarVehiculeSearch.asmx?WSDL')
>>> client.service.GetMainCarMakeListByFirstDrivingDate(FirstDrivingDate=datetime(2015, 9, 22))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/client.py", line 25, in __call__
self._op_name, args, kwargs)
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 109, in send
return self.process_reply(client, operation_obj, response)
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 145, in process_reply
return self.process_error(doc, operation)
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 223, in process_error
detail=fault_node.find('detail'))
zeep.exceptions.Fault: <exception str() failed>
ein Fault
ist die SOAP-Äquivalent eines 500-Fehler hier.
Als ich enable debug logging, können wir sehen, dass der Server produziert wird, eine Antwort Probleme mit:
>>> client.service.GetMainCarMakeListByFirstDrivingDate(FirstDrivingDate=datetime(2015, 9, 22))
zeep.transports: HTTP Post to https://www.assurland.com/ws/CarVehiculeSearch.asmx:
<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<ns0:GetMainCarMakeListByFirstDrivingDate xmlns:ns0="http://tempuri.org/">
<ns0:FirstDrivingDate>2015-09-22T00:00:00</ns0:FirstDrivingDate>
</ns0:GetMainCarMakeListByFirstDrivingDate>
</soap-env:Body>
</soap-env:Envelope>
zeep.transports: HTTP Response from https://www.assurland.com/ws/CarVehiculeSearch.asmx (status: 500):
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Le serveur n'a pas pu traiter la demande. ---> Erreur lors de la génération du document XML. ---> Le type common.FormDataListItem n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour spécifier les types qui ne sont pas connus statiquement.</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/client.py", line 25, in __call__
self._op_name, args, kwargs)
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 109, in send
return self.process_reply(client, operation_obj, response)
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 145, in process_reply
return self.process_error(doc, operation)
File "/Users/mjpieters/Development/venvs/stackoverflow-2.7/lib/python2.7/site-packages/zeep/wsdl/bindings/soap.py", line 223, in process_error
detail=fault_node.find('detail'))
zeep.exceptions.Fault: <exception str() failed>
Versteckt in gibt es die Fehlermeldung:
Le serveur n'a pas pu traiter la demande. --- > Erreur lors de la génération des Dokuments XML. --- > Le Typ common.FormDataListItem n'était pas attendu. Verwenden Sie das Attribut XmlInclude ou SoapInclude Geben Sie den Code für die Art und Weise der Connus Statiquement.
oder, mit einigen Google-Hilfe Übersetzen in Englisch:
Der Server die Anforderung nicht verarbeiten konnte. ---> Fehler beim Erzeugen des XML-Dokuments. ---> Der Typ common.FormDataListItem wurde nicht erwartet. Verwenden Sie das XmlInclude- oder SoapInclude-Attribut, um Typen anzugeben, die statisch nicht bekannt sind.
Da wir keine common.FormDataListItem
Arten senden, und die Nachricht beklagt, dass kein XML-Dokument erzeugt werden könnte, das sieht aus wie ein serverseitige Programmierfehler zu mir.
Es sind Methoden, die Arbeit zu tun, entweder über SOAP:
>>> client.service.GetCarTypeListByCodeMake(CodeMake='BMW', FirstDrivingDate=datetime(2016, 1, 1))
['I3', 'I8', 'M2', 'M3', 'M4', 'M5', 'M6', 'SERIE 1 II', 'SERIE 2', 'SERIE 3 VI', 'SERIE 4', 'SERIE 5', 'SERIE 6', 'SERIE 7', 'X1', 'X3', 'X4', 'X5', 'X6', 'Z4']
>>> client.service.GetAllCarTypeListByCodeMake(CodeMake='BMW')
['1502', '1600', '1602', '1800', '1802', '2000', '2002', '2500', '3,0', '3,3', '315', '316', '318', '320', '323', '324', '325', '328', '330', '518', '520', '523', '524', '525', '528', '530', '535', '540', '545', '550', '628', '630', '633', '635', '645', '650', '725', '728', '730', '732', '733', '735', '740', '745', '750', '760', '840', '850', 'I3', 'I8', 'L7', 'M2', 'M3', 'M4', 'M5', 'M535', 'M6', 'M635', 'SERIE 1', 'SERIE 1 II', 'SERIE 2', 'SERIE 3', 'SERIE 3 (SUITE)', 'SERIE 3 VI', 'SERIE 4', 'SERIE 5', 'SERIE 6', 'SERIE 7', 'X1', 'X3', 'X4', 'X5', 'X6', 'Z1', 'Z3', 'Z4', 'Z8']
oder via Posting application/x-www-form-urlencoded
Daten mit requests
:
>>> response = requests.post('https://www.assurland.com/ws/CarVehiculeSearch.asmx/GetCarTypeListByCodeMake', data={'CodeMake': 'BMW', 'FirstDrivingDate': datetime(2016, 1, 1)})
>>> print(response.text)
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<anyType xsi:type="xsd:string">I3</anyType>
<anyType xsi:type="xsd:string">I8</anyType>
<anyType xsi:type="xsd:string">M2</anyType>
<anyType xsi:type="xsd:string">M3</anyType>
<anyType xsi:type="xsd:string">M4</anyType>
<anyType xsi:type="xsd:string">M5</anyType>
<anyType xsi:type="xsd:string">M6</anyType>
<anyType xsi:type="xsd:string">SERIE 1 II</anyType>
<anyType xsi:type="xsd:string">SERIE 2</anyType>
<anyType xsi:type="xsd:string">SERIE 3 VI</anyType>
<anyType xsi:type="xsd:string">SERIE 4</anyType>
<anyType xsi:type="xsd:string">SERIE 5</anyType>
<anyType xsi:type="xsd:string">SERIE 6</anyType>
<anyType xsi:type="xsd:string">SERIE 7</anyType>
<anyType xsi:type="xsd:string">X1</anyType>
<anyType xsi:type="xsd:string">X3</anyType>
<anyType xsi:type="xsd:string">X4</anyType>
<anyType xsi:type="xsd:string">X5</anyType>
<anyType xsi:type="xsd:string">X6</anyType>
<anyType xsi:type="xsd:string">Z4</anyType>
</ArrayOfAnyType>
Sie werden wahrscheinlich die Betreuer dieser API kontaktieren müssen Wenn Sie dies aussortieren, können Sie nicht auf der Python-Seite arbeiten.
versuchen Sie mit einem Session-Objekt. http://docs.python-requests.org/en/master/user/advanced/ – Ajurna
Warum denken Sie, Sie brauchen Cookies gesetzt? Ein HTTP-Server ist eine Blackbox und kann auf jede Anfrage antworten, wie auch immer sie es für richtig hält. Sie müssen experimentieren, welche Kombination von Kopf- und Körperdaten akzeptiert wird und welche nicht. Viele Server sind zum Beispiel so konfiguriert, dass sie nur Anfragen von bestimmten "User-Agent" -Köpfen akzeptieren, zum Beispiel (Client-Whitelisting). Sie müssen Ihre "Anfragen" -Anfragen mit Anfragen von anderen Clients vergleichen, die funktionieren, und ausprobieren, welche Unterschiede zwischen beiden bestehen. –
Derzeit kann ich die Site nicht einmal in meinem * Browser * verwenden. Es sieht für mich so aus, als sei die Seite * kaputt *, und es wird auch keine Möglichkeit geben, ein Ergebnis mit 'Anfragen' aus dieser Seite zu bekommen. –