Dec-09-2022, 10:41 AM
Hi, I'm trying to extract a table from a webpage and have tried a number of alternatives, but the table always seems to remain empty.
Two of what I thought were the most promising sets of code are attached below. Any means of extracting the data from the webpage would be considered as helpful. I have also included a screenshot of the table I want to extract.
Two of what I thought were the most promising sets of code are attached below. Any means of extracting the data from the webpage would be considered as helpful. I have also included a screenshot of the table I want to extract.
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC browser = webdriver.Chrome() browser.set_window_size(1120, 550) # Create an URL object url = 'https://www.flightradar24.com/data/aircraft/ja11jc' browser.get(url) element = WebDriverWait(browser, 3).until( EC.presence_of_element_located((By.ID, "tbl-datatable")) ) data = element.get_attribute('tbl-datatable') print(data) browser.quit()or
# Import libraries import requests from bs4 import BeautifulSoup import pandas as pd # Create an URL object url = 'https://www.flightradar24.com/data/aircraft/ja11jc' # Create object page page = requests.get(url) # parser-lxml = Change html to Python friendly format # Obtain page's information soup = BeautifulSoup(page.text, 'lxml') soup # Obtain information from tag <table> table1 = soup.find("table", id='tbl-datatable') table1 # Obtain every title of columns with tag <th> headers = [] for i in table1.find_all('th'): title = i.text headers.append(title) # Create a dataframe mydata = pd.DataFrame(columns = headers) # Create a for loop to fill mydata for j in table1.find_all('tr')[1:]: row_data = j.find_all('td') row = [i.text for i in row_data] length = len(mydata) mydata.loc[length] = row