Попытка получить информацию из Евростата, используя Python - PullRequest
0 голосов
/ 11 июля 2020

Мне регулярно требуется информация для экономической статистики от Евростата, чтобы обучить и протестировать модель вывода.

Я попытался автоматизировать процесс, используя Requests и BeautifulSoup ;

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'Accept': '*/*'
}

page = requests.get('https://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=sts_inpr_m&lang=en', headers=headers)
return BeautifulSoup(page.text, 'html.parser')

Хотя в ответ я получаю:

<html>
 <head></head>
 <body>
<script type='text/javascript' language='JavaScript' src='https://appsso.eurostat.ec.europa.eu/nui/js/jquery-1.3.2.js'></script>
<script type='text/javascript' language='JavaScript' src='https://appsso.eurostat.ec.europa.eu/nui/js/noMultipleWindows.js?d=1594493775728'></script>
  <form id='firepost' method='POST' action='https://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=sts_inpr_m&lang=en&fbclid=IwAR0wiAQfEomg6H-OfRlAgbLI5laWbqXr0W5QjeT89I_MOvaQiQUIDEx5XBg'>
   <input type='hidden' name='dataset' value="sts_inpr_m"/>
   <input type='hidden' name='fbclid' value="IwAR0wiAQfEomg6H-OfRlAgbLI5laWbqXr0W5QjeT89I_MOvaQiQUIDEx5XBg"/>
   <input type='hidden' name='lang' value="en"/>
  </form>
  <form id='errorForm' method='POST' action='https://appsso.eurostat.ec.europa.eu/nui/onewindowpersession.do'>
  </form>
  <script type='text/javascript'>
    blockOrAllowProceed();
  </script>
 </body>
</html>

Как я могу (если вообще возможно) сделать BeautifulSoup получить контент из указанное место?

1 Ответ

1 голос
/ 11 июля 2020

Указанный URL не является запросом на получение. Это почтовый запрос с телом json, как в приведенном ниже коде

data = {"dataset":"sts_inpr_m","lang":"en"}
res = requests.post("https://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=sts_inpr_m&lang=en", json=data)
print(res.text)

return BeautifulSoup(res.text, 'html.parser')

Вывод:

image
...