Очистка AJAX-страницы с запросами - PullRequest
0 голосов
/ 23 февраля 2019

Я хотел бы просмотреть результаты этого процесса бронирования .

Просматривая вкладку сети, я обнаружил, что данные извлекаются с помощью AJIAX GET по этому URL.:

https://shop.caremar.it/main_acquista_1_corse_00_ajax.asp?l=it&data=24/02/2019&portoP=3&portoA=5&form_url=ticket_s1_2

Я создал URL-адрес, передав параметры следующим образом:

params = urllib.parse.urlencode({
        'data': '24/02/2019',
        'portoP': '3' ,
        'portoA': '5',
        'form_url': 'ticket_s1_2',
    })

и сделал запрос:

caremar_timetable_url = "https://shop.caremar.it/main_acquista_1_corse_00_ajax.asp?l=it&"
print(f"https://shop.caremar.it/main_acquista_1_corse_00_ajax.asp?l=it&{params}")
headers = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.3'}
res = requests.get(caremar_timetable_url,headers=headers, params=params)
soup = BeautifulSoup(res.text,'html.parser')
print(soup.text)

Вывод

https://shop.caremar.it/main_acquista_1_corse_00_ajax.asp?l=it&data=24%2F02%2F2019&portoP=7&portoA=1&form_url=ticket_s1_2
Non è stato possibile procedere con l'acquisto del biglietto online. Si prega di riprovare

Ответом является сообщение об ошибке с сайта, в котором говорится, что он не может завершить бронирование.Если я скопирую и вставлю созданный в браузере URL-адрес, я получу нестилированную HTML-страницу с нужными мне данными.Почему это так и как мне это преодолеть?

1 Ответ

0 голосов
/ 23 февраля 2019

Данные, похоже, возвращаются с запросами

import requests
from bs4 import BeautifulSoup as bs
url = 'https://shop.caremar.it/main_acquista_1_corse_00_ajax.asp?l=it&data=27/02/2019&portoP=1&portoA=4&form_url=ticket_s1_2'

res = requests.get(url)
soup = bs(res.content, 'lxml')
print(soup.select_one('html'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...