Sitio web: http://www.busonlineticket.com/booking/singapore-to-shah-alam-bus-tickets
Básicamente, estoy tratando de obtener datos sobre los viajes en autobús de este sitio web, pero los datos que obtengo dependen de la fecha seleccionada por el usuario para la que es mi aplicación web.
¿Alguien tiene alguna idea de cómo puedo escribir un programa que pueda extraer datos de las etiquetas <li class='liDaysNew'>
Imagen del sitio web y el DOM en cuestión
Mi código actual es como tal:
page = requests.get(bus_URL, headers=headers) soup = BeautifulSoup(page.content, 'html.parser') buses = soup.find_all('tr', class_='bustr1') bus_companies = [] depart_times = [] departure_locations = [] arrival_locations = [] prices = [] for bus in buses: bus_company = bus.find('span', class_='buscompanyname').text depart_time = bus.find('span', class_='bustime').text departure_location_div = bus.find('div', class_='mbuspickup1') departure_location = departure_location_div.find('span').text arrival_location_div = bus.find('div', class_='mbusdropoff1') arrival_location = arrival_location_div.find('span').text price = bus.find('price', class_='mbusprice1').text Sé cómo raspar un sitio web normal, son solo las etiquetas <li class='liDaysNew'> con la lógica onclick lo que me está desconcertando.
import requests from bs4 import BeautifulSoup import pandas as pd headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36'} data = {'deptdate': '2022-07-16', ## your departure date 'rtndate': '2022-07-18', ## your return date 'pax': '1', 'way': '1', 'type': 'bus', 'sbf': 'undefined'} r = requests.post("https://www.busonlineticket.com/booking/singapore-to-shah-alam-bus-tickets", headers=headers, data=data) soup = BeautifulSoup(r.text) table_div = soup.select_one('#subtab1') tables = pd.read_html(str(table_div)) df = tables[0] print(df) Esto devolverá un marco de datos de pandas: 
Por supuesto, puede usar BeautifulSoup para extraer datos de una manera diferente a un marco de datos, como elementos de tabla separados, etc.