我正试图将https://www.usdebtclock.org/world-debt-clock.html上显示的数字略过,但是由于数字不断变化,我不知道如何收集这些数据。 这是我试图做的一个例子
import requests
from bs4 import BeautifulSoup
url ="https://www.usdebtclock.org/world-debt-clock.html"
URL=requests.get(url)
site=BeautifulSoup(URL.text,"html.parser")
data=site.find_all("span",id="X4a79R9BW")
print(data)
结果是:
“[]” 当我怀孕的时候
“$19987137284731”
有什么我可以更改以提取号码的吗
BeautifulSoup无法为您执行此操作,因为您需要的数据是由JavaScript提供的,并且BeautifulSoup不支持JS处理
另一种方法是使用Selenium WebDriver之类的工具:
如果您以前没有使用过Selenium WebDriver,则需要遵循安装说明here
特别是,您需要按照说明下载您选择的浏览器驱动程序(我使用geckodriver for Firefox)。并确保可执行文件位于您的路径上
(我希望还有其他基于Python的替代方案。)
基于页面的代码,我认为您想要实现的可能不可能是BS。运行代码返回
[<span id="X4a79R9BW"> </span>]
。尝试getText()
在该问题上返回任何结果。在查看页面时,我注意到跨度中的数值与页面上的数值一样不断更新。查看页面源代码显示X4a79R9BW
出现在页面的五个位置。首先设置字体的各个方面,处理公式的几个位置,最后设置代码所刮取的空白范围。从源代码来看,计数器似乎是一个在标记<script type="text/javascript">
内运行的等式。下面是我认为在JavaScript标记下运行的等式:页面源代码的这一部分表示您想要的文本正在通过JavaScript不断更新。鉴于此,我的理解是,BS不是完成所需任务的合适库。虽然我自己并没有使用它,但我已经看到Selenium是一个建议的库,可以通过JavaScript动态更新页面。祝你好运,也许其他人可以提供一条更清晰的前进道路
相关问题 更多 >
编程相关推荐