首页 > 解决方案 > 从需要时间加载的网页中抓取数据的问题

问题描述

作为练习的一部分,我正在尝试从网页中抓取数据,但似乎网页的设置方式让我的一些努力感到沮丧。基本上,我认为网页需要一段时间来加载我感兴趣的功能,因此,当我运行代码来提取我想要的数据时,它会失败。这是网页:https ://www.cbn.gov.ng/rates/ExchRateByCurrency.asp

我注意到即使检查源代码,表格部分也需要一段时间才能加载。

这是我的代码:

from bs4 import BeautifulSoup as bs
from requests import get

html = get("https://www.cbn.gov.ng/rates/ExchRateByCurrency.asp").text

html = bs(html,"lxml")
html = html.find("div",id="ContentTextinner")

现在,如果我运行它html.tbody,这是我的输出: 在此处输入图像描述

相比之下,网站本身,一旦完成加载,显然在该部分中有很多内容:

在此处输入图像描述

在打开检查视图重新加载网页后,我发现源代码本身直到一秒钟左右才完全加载。我想这可能就是为什么html.tbody即使在完全加载的页面中充满有价值的信息时也会显示为空的原因。我想要一些关于如何解决这个问题的建议吗?

标签: pythonhtmlweb-scraping

解决方案


您可以使用类似的库selenium来实现此目的。

例如:

from selenium import webdriver
from bs4 import BeautifulSoup as bs

driver = webdriver.Firefox()
driver.get("https://www.cbn.gov.ng/rates/ExchRateByCurrency.asp")

html = driver.page_source
print(html.find("div",id="ContentTextinner"))

driver.quit()

推荐阅读