Получить форму Just-Eat - PullRequest
       60

Получить форму Just-Eat

0 голосов
/ 04 мая 2019

Я хочу отказаться от форм в Just-Eat, но похоже, что форма не существует!Я использую этот код:

br.open("https://www.just-eat.fr/")
form = br.get_forms()

, но форма не обнаружила никакой формы!Но когда вы переходите к исходному коду, мы можем найти форму:

<form class="search-form autocomplete-target" action="#" id="geolocate_form_home">

Я не знаю, как сделать ее обнаружимой!У кого-нибудь была идея?

Большое спасибо!

1 Ответ

0 голосов
/ 05 мая 2019

Сервер отправляет страницу только с <iframe>, в котором есть сообщение о блокировке по соображениям безопасности.

Первая проблема в заголовке User Agent. Обычно Python использует python-requests/2.21.0, но серверу может потребоваться User Agent, используемый в реальном браузере. Например Firefox в Linux

br = robobrowser.RoboBrowser(user_agent='Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0')

Но он все равно может отправить страницу с <iframe>, в которой есть сообщение.

Но если я снова загружу тот же URL-адрес, он загрузит правильную страницу.
Возможно, теперь у него есть все необходимые файлы cookie, и теперь сервер не создает проблем.

Если вы хотите, вы также можете загрузить страницу из <iframe>, чтобы вести себя как настоящий человек.

import robobrowser

br = robobrowser.RoboBrowser(user_agent='Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0')
br.parser = 'lxml'

br.open("https://www.just-eat.fr")
#print(br.parsed)
print(br.get_forms())

#iframe_src = br.select('iframe')[0]['src']
#print(iframe_src)

#br.open("https://www.just-eat.fr"+iframe_src)
#print(br.parsed)

br.open("https://www.just-eat.fr")
#print(br.parsed)
print(br.get_forms())
...