Как очистить скрытый стол с красивым супом - PullRequest
0 голосов
/ 02 апреля 2019

Речь идет об очистке скрытого стола с помощью beautifulsoup.

. Как вы можете видеть на этом сайте , есть кнопка "choisissez votre séance", и когда мы нажимаем на нее,будет отображаться таблица.

Когда я нажимаю на элемент таблицы, я вижу тег, который содержит такие атрибуты, как цена.Однако, когда я просматриваю исходный код веб-сайта, я не могу найти эту информацию.

В коде таблицы 'display: none' есть что-то, что, на мой взгляд, влияет на это, но я не могу найтирешение.

1 Ответ

0 голосов
/ 02 апреля 2019

Может показаться, что страница использует AJAX и загружает данные для оценки в фоновом режиме.Используя Chrome я нажал F12 и посмотрел под вкладкой сети.Когда я нажал кнопку «choisissez votre séance», я заметил POST по этому адресу:

'https://www.ticketmaster.fr/fr/manifestation/holiday-on-ice-billet/idmanif/446304'

Это отличная новость для вас, так как вам не нужно очищать данные HTMLвам просто нужно предоставить идентификатор (в исходном коде страницы) API.

В приведенном ниже коде я

  1. Запрос начальной страницы
  2. Сборcookie
  3. Размещение идентификатора (данных) и собранных нами файлов cookie
  4. Возвращение данных JSON, необходимых для дальнейшей обработки (переменная J)

Надеюсь, что приведенное ниже поможетушел!

Ура, Адам


import requests
from bs4 import BeautifulSoup

h = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
s = requests.session()

initial_page_request = s.get('https://www.ticketmaster.fr/fr/manifestation/holiday-on-ice-billet/idmanif/446304',headers=h)

soup = BeautifulSoup(initial_page_request.text,'html.parser')
idseanc = soup.find("select",{"id":"sessionsSelect"})("option")[0]['value'].split("_")[1]

cookies = initial_page_request.cookies.get_dict()

headers = {
    'Origin': 'https://www.ticketmaster.fr',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
    'Content-Type': 'application/json; charset=UTF-8',
    'Accept': '*/*',
    'Referer': 'https://www.ticketmaster.fr/fr/manifestation/holiday-on-ice-billet/idmanif/446304',
    'X-Requested-With': 'XMLHttpRequest',
    'Connection': 'keep-alive',
}

data = {'idseanc':str(idseanc)}

response = s.post('https://www.ticketmaster.fr/planPlacement/FindPrices/connected/false/idseance/2870471', headers=headers, cookies=cookies, data=data)

j = response.json()

...