“缺失”/隐藏的 HTML 代码阻碍了 Webscraper 开发

Posted

技术标签:

【中文标题】“缺失”/隐藏的 HTML 代码阻碍了 Webscraper 开发【英文标题】:"Missing"/Hidden HTML Code Stalling Webscraper Development 【发布时间】:2022-01-23 07:15:12 【问题描述】:

我是一名新手程序员,试图创建一个网络抓取程序,最终目标是加快 NASA EarthData 程序的 .ict 和 .csv 文件之间的转换速度。我计划使用 BeautifulSoup Python 库从网页中收集数据,然后将其转换为表格,然后将其转换为 .csv 文件。我计划转换的第一个链接是: https://asdc.larc.nasa.gov/data/AJAX/O3_1/2018/02/28/AJAX-O3_ALPHA_20180228_R1_F220.ict

在打开 Chrome 的 DevTools 以查找列后面的 html 代码时,我惊讶地发现缺少代码: Lack of HTML Data

有人可以帮我理解通过.ict文件解析然后获取这些数据转换成表格的方式吗?

理想情况下,我打算有 7 列('Int_Start'、'Int_End'、'TIME'、'G_Lat'、'G_Lon'、'G_Alt'、'O3')。 在每一列下,我计划将图像中看到的七列中的所有值分配给它们各自的列,然后我将它们导出到一个 .csv 文件。

该网站位于 NASA EarthData 身份验证墙后面,我已使用以下代码登录:

link = 'https://urs.earthdata.nasa.gov/login'

with requests.Session() as s:
    s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
    r = s.get(url)
    soup = BeautifulSoup(r.text,"lxml")
    payload = i['name']:i.get('value','') for i in soup.select('input[name]')
    payload['username'] = 'username'
    payload['password'] = 'password'
# For the program to work, each user will need to input their username and password in the lines above.
    res = s.post(link,data=payload)
    res = s.get(url)
    print(res.text)

我在其中插入我的个人信息作为有效负载用户名和密码。对于其他库使用或如何访问数据的 HTML 的任何建议将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

我可以通过添加代码来解决问题:

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

在下一个单元格中。共有三个标签:<HTML><body><p>

【讨论】:

以上是关于“缺失”/隐藏的 HTML 代码阻碍了 Webscraper 开发的主要内容,如果未能解决你的问题,请参考以下文章

程序员学会深度思考系列1:阻碍深度思考的 9 个思维定式

HTML - Img alt 属性隐藏图像

是什么在.NET程序关闭时阻碍进程的退出?

Lua的语法缺失及替代措施

是什么阻碍了代码的重用?问题是否应该只解决一次即可?

面经|缺失值填补的7种方法(使用场景+Python代码)