Ich verstehe im Allgemeinen, wie man eine POST
Anfrage mit urllib2 (Codierung der Daten, etc.), aber das Problem ist, alle Tutorials online verwenden völlig nutzlos erfunden Beispiel URLs zu zeigen, wie tun Sie es (someserver.com
, coolsite.org
, usw.), also kann ich das spezifische html nicht sehen, das dem Beispielcode entspricht, den sie benutzen. Selbst python.org
eigene tutorial ist in dieser Hinsicht völlig nutzlos.Python urllib2 oder Anfragen Post-Methode
Ich brauche eine POST
Anforderung an diese URL zu machen:
https://patentscope.wipo.int/search/en/search.jsf
Der relevante Teil des Codes ist dies (glaube ich):
<form id="simpleSearchSearchForm" name="simpleSearchSearchForm" method="post" action="/search/en/search.jsf" enctype="application/x-www-form-urlencoded" style="display:inline">
<input type="hidden" name="simpleSearchSearchForm" value="simpleSearchSearchForm" />
<div class="rf-p " id="simpleSearchSearchForm:sSearchPanel" style="text-align:left;z-index:-1;"><div class="rf-p-hdr " id="simpleSearchSearchForm:sSearchPanel_header">
Oder vielleicht ist es das:
<input id="simpleSearchSearchForm:fpSearch" type="text" name="simpleSearchSearchForm:fpSearch" class="formInput" dir="ltr" style="width: 400px; height: 15px; text-align: left; background-image: url("https://patentscope.wipo.int/search/org.richfaces.resources/javax.faces.resource/org.richfaces.staticResource/4.5.5.Final/PackedCompressed/classic/org.richfaces.images/inputBackgroundImage.png"); background-position: 1px 1px; background-repeat: no-repeat;">
Wenn ich als Suchbegriff JP2014084003
codieren möchte, was ist der entsprechende Wert im html zu verwenden? input id
? name
? value
?
Addendum: this answer beantwortet meine Frage nicht, weil es nur die Informationen wiederholt, die ich bereits in der Python-Dokumentseite betrachtet habe.
UPDATE:
ich this gefunden und versuchte dort den Code aus, und zwar:
import requests
headers = {'User-Agent': 'Mozilla/5.0'}
payload = {'name':'simpleSearchSearchForm:fpSearch','value':'2014084003'}
link = 'https://patentscope.wipo.int/search/en/search.jsf'
session = requests.Session()
resp = session.get(link,headers=headers)
cookies = requests.utils.cookiejar_from_dict(requests.utils.dict_from_cookiejar(session.cookies))
resp = session.post(link,headers=headers,data=payload,cookies =cookies)
r = session.get(link)
f = open('htmltext.txt','w')
f.write(r.content)
f.close()
ich eine erfolgreiche Antwort erhalten (200
), aber die Daten, ist wieder einmal einfach die Daten in die ursprüngliche Seite, also weiß ich nicht, ob ich auf dem Formular richtig poste und es gibt noch etwas, was ich tun muss, damit es die Daten von der Suchergebnisseite zurückgibt, oder wenn ich die Daten immer noch falsch poste .
Und ja, ich weiß, dass dies requests
statt urllib2
verwendet, aber alles, was ich tun möchte, ist die Daten zu bekommen.
Die Suche wird als Formulardaten gesendet, nicht als Teil der URL. Der Schlüssel für den Abfragetext ist 'simpleSearchSearchForm: fpSearch'. Beachten Sie, dass Sie dies mit den Entwicklertools in Ihrem Browser sehen können, wenn Sie eine Suche manuell durchführen. – jonrsharpe
Okay. Was bedeutet das? Damit meine ich: Was soll ich tun, um die Daten zu posten und die benötigte Seite abzurufen? –
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data – jonrsharpe