【问题标题】:Alternative HTML Scraping Function?替代 HTML 抓取功能?
【发布时间】:2022-01-24 04:48:28
【问题描述】:

我是一名新手程序员,正在创建一个网络抓取程序,该程序将加速将 .ict 文件从 NASA 的 EarthData 数据库转换为 .csv 文件以供编程使用。

我正在尝试从存储在此 URL 的 .ict 文件创建一个 pandas 数据框: https://asdc.larc.nasa.gov/data/AJAX/O3_1/2018/06/06/AJAX-O3_ALPHA_20180606_R1_F229.ict

并计划使用BeautifulSoup 库来抓取数据。当我编写soup.findAll 函数时,我意识到它返回了整个数据帧,因为它嵌套在一段 HTML 代码中。我认为由于所有数据都存储在一个段落中,这使得findAll函数难以使用。

我可以使用备用库来获取我正在寻找的数据吗?这是一些成功返回我试图抓取的文件的 HTML 的代码:

html_data = res.text
soup = BeautifulSoup(html_data, 'lxml')
print(soup.prettify())

这会返回数据:

<html>
 <body>
  <p>
[42 lines of metadata text]
Int_Start, Int_End, TIME, G_Lat, G_Lon, G_Alt, O3
      72073.0,      72081.0,      72077.4,      -9999.0000,      -9999.0000,      -9999.0000,      34.8884
      72084.0,      72092.0,      72087.6,      -9999.0000,      -9999.0000,      -9999.0000,      33.0842
      72093.0,      72101.0,      72097.4,      -9999.0000,      -9999.0000,      -9999.0000,      33.0454
      72104.0,      72112.0,      72107.6,      -9999.0000,      -9999.0000,      -9999.0000,      34.7138
... ... ... ... ... ... ...
... ... ... ... ... ... ...
  </p>
 </body>
</html>

有趣的是,数据并没有像代码那样存储为表格

page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')

dfs = pd.read_html(page.text)

显示未找到表的错误。任何可以用来帮助我绕过这个问题的建议都将不胜感激。谢谢!

【问题讨论】:

    标签: python html pandas csv beautifulsoup


    【解决方案1】:

    我查看了您共享文件的目录,并注意到了这个链接,Scripts for Downloading Data

    从那里我点击Downloading ASDC Data with Python 3,有两个脚本;一个用于下载单个 ICT 文件,第二个用于下载 ICT 文件的目录树。

    我将从第二个脚本开始,看看您是否可以下载所有 ICT 文件。

    获得 ICT 文件后,下一步就是将它们转换为 CSV,这并不容易,而且既然您承认自己是新手,我会遵从已经编写好的软件。我找不到将 ICT(称为“ICARTT”)直接转换为 CSV 的工具。我确实找到了a tool for converting from ICT to NetCDF,一旦它在 NetCDF 中,您就可以导出为 CSV。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 2015-04-08
      相关资源
      最近更新 更多