PythonのBeautifulSoup・Pandasを使って、下記のWEBをスクレイピングしたいです。
BeautifulSoupのスクレイピング勉強中です。
URL
centrairFligth
下記のようにカラム1個ずつで分けてデータを出力したいです。
実現したい結果
定刻[変更] | 出発地[経由] | 航空会社(コードシェア) | ターミナル | 機種 | 現在の状況 |
---|---|---|---|---|---|
08:55 08:47 | 福岡ANA 432ANA | T1 | B738 | 到着済み | |
08:55 08:47 | 東京(羽田) | DLH4967 SAS9481 UAL7956 | T1 | B738 | 到着済み |
現在の結果1カラムに全て入力されます。
1個ずつのカラムに分けることは可能でしょうか。
良い方法が見つからず、DataFrameで行っています。
コメントアウトしている部分ですが、
以前はdf=dfs[0]
Tableで簡単に取得出来ておりましたが、
Tableからclassへ変更されたのでスクレイピングの取得が難しくなりました。
もしもう少し簡単な方法ありましたら、教えていただけますか。
お手数ですが、よろしくお願い致します。
現在の結果
定刻[変更] | 出発地[経由] | 航空会社(コードシェア) | ターミナル | 機種 | 現在の状況 |
---|---|---|---|---|---|
08:55 08:47福岡ANA 432ANAT1B738到着済み | 08:55 08:47福岡ANA 432ANAT1B738到着済み | ... |
全体のコード
import pandas as pd import time from datetime import datetime as dt, date, timedelta from dateutil.relativedelta import relativedelta from selenium import webdriver from bs4 import BeautifulSoup from webdriver_manager.chrome import ChromeDriverManager file_time= dt.now().strftime("%Y%m%d") today= dt.now().strftime("%Y/%m/%d") #保存ファイル指定 file="test"+file_time+".csv" #url指定 url = 'https://www.centrair.jp/flight/search/?da=A&id=D&fd=20220503' driver = webdriver.Chrome(executable_path=ChromeDriverManager().install()) #driver = webdriver.Chrome(executable_path="C:\selenium\chromedriver.exe") #Chubuフライ情報のサイトを開く driver.get(url) #2秒待機 time.sleep(2) #BeautifulSoup指定 html = driver.page_source.encode('utf-8') soup = BeautifulSoup(html, 'html.parser') #print(soup) data= soup.find('div', class_='js-flight-search-result').text print(data) df = pd.DataFrame({'定刻[変更]': [data],'出発地[経由]': [data],'航空会社(コードシェア)': [data],'ターミナル': [data],'機種': [data],'現在の状況': [data]}) print(df) # dfs = pd.read_html(html) # df=dfs[0] # #Table print # #print(df) # #Excel形式でハルエネ出力------------------- # #df.to_excel(file,index=False,encoding='utf-8') df.to_csv(file,index=False,encoding="utf_8_sig")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/09 00:55
2022/05/09 02:56