Я пытаюсь очистить табличное содержимое от этого веб-страница. Чтобы найти контент, необходимо щелкнуть вкладку 12 под этим заголовком How to navigate the interactive report
. При нажатии на эту вкладку табличное содержимое отображается внизу этой страницы под Moves To Austin-Round Rock-Georgetown, TX MSA
.
Когда я наблюдаю сетевую активность в инструментах chrome dev при заполнении данных вручную, я мог заметить, что на этот URL-адрес отправляется HTTP-запрос публикации вместе с соответствующим параметром https://public.tableau.com/vizql/w/CBREMigrationAnalysisv1extract/v/CBREMigrationAnalysis/sessions/F3E2227B603E4F5AB3156667A673CF9E-0:0/commands/tabdoc/set-active-story-point
, в котором часть между /sessions/
и /commands/
является динамической < / strong>.
Однако мне удалось получить эту динамическую часть из этот URL на лету перед отправкой запросов на публикацию. Теперь, когда я пытаюсь выполнить следующий сценарий, я получаю 500
код состояния.
Я пробовал:
import requests
from bs4 import BeautifulSoup
from pprint import pprint
base = 'https://public.tableau.com/views/CBREMigrationAnalysisv1extract/CBREMigrationAnalysis?:showVizHome=no&:embed=true&parentUrl=https%3A%2F%2Fwww.cbre.us%2Fresearch-and-reports%2FCOVID-19-Impact-on-Resident-Migration-Patterns'
link = 'https://public.tableau.com/vizql/w/CBREMigrationAnalysisv1extract/v/CBREMigrationAnalysis/sessions/{}/commands/tabdoc/set-active-story-point'
payload = {
'storyboard': 'CBRE Migration Analysis',
'storyPointId': '14',
'shouldAutoCapture': 'false',
'shouldAutoRevert': 'true'
}
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
'x-newrelic-id': 'XA4CV19WGwIBV1RVBQQBUA==',
'x-tsi-active-tab': 'CBRE%20Migration%20Analysis',
'x-tsi-supports-accepted': 'true',
'referer': base,
}
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
r = s.get(base)
post_link = link.format(r.headers['X-Session-Id'])
s.headers.update(headers)
res = s.post(post_link,data=payload)
print(res.status_code)
pprint(res.json()['vqlCmdResponse']['layoutStatus']['applicationPresModel'])
Как я могу получить доступ к табличному содержимому с этой страницы с помощью запросов?