Это то, что я делаю для проверки на ошибки.
if(isset($responseKeys["error-codes"])){
//has errors
}
else{
//no errors
}
Также правильной переменной является g-recaptcha-response , а не gRecaptchaResponse .
Проблемой являются пространства имен. Когда проанализировано как XML, тег img находится в http://www.w3.org/1999/xhtml пространство имен, так как это - пространство имен по умолчанию для элемента. Вы просите тег img ни в каком пространстве имен.
Попытка это:
>>> tree.getroot().xpath(
... "//xhtml:img",
... namespaces={'xhtml':'http://www.w3.org/1999/xhtml'}
... )
[<Element {http://www.w3.org/1999/xhtml}img at 11a29e0>]
XPath полагает, что все неснабженные префиксом имена не находятся в "никаком пространстве имен" .
В особенности спецификация говорит:
"QName в тесте узла расширен на расширенное имя с помощью объявлений пространства имен от контекста выражения. Это - тот же способ, которым расширение сделано для имен типов элемента в запуске и конечных тэгах за исключением того, что пространство имен по умолчанию, объявленное с xmlns, не используется: если QName не имеет префикса, то URI пространства имен является пустым (это - тот же способ, которым названия атрибута расширены)".
Посмотрите те два подробных объяснения проблемы и ее решения: здесь и здесь . Решение состоит в том, чтобы связать префикс (с API, это используется) и использовать его для добавления префикса любого неснабженного префиксом имени в выражении XPath.
Hope это помогло.
С наилучшими пожеланиями,
Dimitre Novatchev