我已经阅读了无数其他帖子,try 了很多技巧,但我似乎无法从以下网站的表格中获得我想要的数据.我只能返回其他div及其类,但不能返回值.

我希望从以下三列中获得所有行(按航空公司、按始发机场、按目的地机场):

我try 搜索'th class',但它只返回div信息,而不返回数据.

任何帮助都将不胜感激

非常感谢.

我的try :

rows = soup.findAll('table', attrs={'class': 'cancellation_boards'})
for r in rows:
    t = r.find_all_next('div', attrs= {'class':'cancellation_board'})
for r in rows:
    r.text

推荐答案

您看到的数据是通过Ajax请求加载的,因此BeautifulSoup不会看到它.你可以通过requests来模拟它.要将数据加载到一个 Big Data 帧,可以使用下一个示例:

import requests
import pandas as pd


url = "https://flightaware.com/ajax/airport/cancelled_count.rvt"

params = {
    "type": "airline",
    "timeFilter": "((b.sch_block_out BETWEEN '2022-04-02 8:00' AND '2022-04-03 8:00') OR (b.sch_block_out IS NULL AND b.filed_departuretime BETWEEN '2022-04-02 8:00' AND '2022-04-03 8:00'))",
    "timePeriod": "today",
    "airportFilter": "",
}

all_dfs = []
for params["type"] in ("airline", "destination", "origin"):
    df = pd.read_html(requests.get(url, params=params).text)[0]
    df["type"] = params["type"]
    all_dfs.append(df)

df_final = pd.concat(all_dfs)
print(df_final)
df_final.to_csv("data.csv", index=False)

输出:

                              Airline                                                   Airport Cancelled      Delayed              type
                              Airline                                                   Airport         #    %       #    %             
0                       China Eastern                                                       NaN       509  45%      28   2%      airline
1                     Spring Airlines                                                       NaN       443  82%       5   0%      airline
2                           Southwest                                                       NaN       428  12%    1369  39%      airline
3                   American Airlines                                                       NaN       317  10%     472  16%      airline
4                               Delta                                                       NaN       229   8%     444  16%      airline
5                              Spirit                                                       NaN       190  23%     207  26%      airline
6                     Hainan Airlines                                                       NaN       167  41%       9   2%      airline
7                             JetBlue                                                       NaN       144  14%     494  48%      airline
8                            Lion Air                                                       NaN       129  20%      53   8%      airline
9                             easyJet                                                       NaN       121   8%     471  32%      airline

...

并保存data.csv个(LibreOffice截图):

enter image description here

Python相关问答推荐

使用Python进行网页抓取,没有页面

无法导入已安装的模块

通过仅导入pandas来在for循环中进行多情节

通过优化空间在Python中的饼图中添加标签

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

如何在具有重复数据的pandas中对groupby进行总和,同时保留其他列

对Numpy函数进行载体化

TARete错误:类型对象任务没有属性模型'

仿制药的类型铸造

Deliveryter Notebook -无法在for循环中更新matplotlib情节(保留之前的情节),也无法使用动画子功能对情节进行动画

无法在Docker内部运行Python的Matlab SDK模块,但本地没有问题

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

Pandas Data Wrangling/Dataframe Assignment

旋转多边形而不改变内部空间关系

在极中解析带有数字和SI前缀的字符串

matplotlib + python foor loop

为什么'if x is None:pass'比'x is None'单独使用更快?

如何将数据帧中的timedelta转换为datetime

如何在Python Pandas中填充外部连接后的列中填充DDL值

在电影中向西北方向对齐""