python - 从需要时间加载的网页中抓取数据的问题
问题描述
作为练习的一部分,我正在尝试从网页中抓取数据,但似乎网页的设置方式让我的一些努力感到沮丧。基本上,我认为网页需要一段时间来加载我感兴趣的功能,因此,当我运行代码来提取我想要的数据时,它会失败。这是网页: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
即使在完全加载的页面中充满有价值的信息时也会显示为空的原因。我想要一些关于如何解决这个问题的建议吗?
解决方案
您可以使用类似的库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()
推荐阅读
- flutter - 注释掉 vs 代码中的颤振打印语句
- javascript - 模式角形式控制器中的特殊字符
- javascript - 如何从数组中获取匹配字符串的结果?
- r - .local(.Object, ...) 中的错误:“nobs”或“ninputs”不是正整数调用:cforest ... .local -> new -> initialize -> initialize -> .local
- anaconda - conda init 在 Windows 上的 bash 中不起作用
- java - 将页面对象模型与 Page Fatcory 一起使用的最佳方法是什么
- angularjs - 如何在angularjs的模板中显示范围变量值
- angular - Angular 7无法删除子cookie路径
- azure-devops - 如何在 Azure 门户中找到 SonarQube 服务器 URL
- gradle - Extract json files from gradle runtime dependency jars