在 Excel 中列出飞机清单并制作规格表

在 Excel 中列出飞机清单并制作规格表

我有一份来自维基百科的飞机列表:https://en.wikipedia.org/wiki/List_of_regional_airliners我想获取每架飞机的规格,并将其粘贴到 Excel 中的新工作表中,以便制作一个总体比较表。最好的方法是什么?

编辑澄清:

我想按照链接转到单独页面上的规格。例如,第一个条目是空客 A220,我想按照该表中的链接转到 en.wikipedia.org/wiki/Airbus_A220#Specifications 并提取规格表,这样我就可以了解每架飞机的详细信息。

答案1

因此,excel 没有跟踪链接的功能,因此我编写了一个具有此功能的 python 脚本。它基本上使用 beautifulsoup 抓取页面中的链接并访问每个链接。然后,它使用 pandas 转换该页面上的“规格”下的表格,并将其保存为 excel 中的新工作表。

import pandas as pd 
import requests
from bs4 import BeautifulSoup 
import re

wikiurl="https://en.wikipedia.org/wiki/List_of_regional_airliners"
table_class="wikitable sortable jquery-tablesorter"

# get main table and grab links from first column of table
response=requests.get(wikiurl)
soup = BeautifulSoup(response.text, 'html.parser')
links = [items.find("a")["href"] for items in soup.find(class_="wikitable").find_all("tr")[1:] ]

# open excel file and and loop over each link extension
writer = pd.ExcelWriter("test_out.xlsx", engine = 'xlsxwriter')
for link in links:
    testurl = "https://en.wikipedia.org" + link
    response=requests.get(testurl)
    soup = BeautifulSoup(response.text, 'html.parser')

    # remove refrences that wiki adds eg [0,1]
    for tag in soup.find_all(class_="reference"):
        tag.decompose()
    span = soup.find('span', {'id': re.compile("Specifications*")})

    # if there is a table found save to a new sheet in excel 
    # with the name of the link
    if span != None:
        table = span.parent.find_next_siblings("table")
        try:
            specs = pd.read_html(str(table))[0]
            name = link.split('/')[-1][:31]
            specs.to_excel(writer, sheet_name=name)
        except Exception as e:
            print("failed to add: " + link)
            print(e)
            print("___________________________")

writer.save()
writer.close()

相关内容