performance.getEntries()无法获取更新

时间:2019-11-20 00:41:45

标签: python selenium selenium-webdriver webdriver

我正在尝试从流媒体网站获取过去所有网络条目的json。这是我在其中看到这些网络条目的屏幕截图:

enter image description here

按下播放按钮后,网站将在大约每11秒的时间段内加载.acc文件(例如.mp3)。我正在运行一个脚本来获取script =指定的所有条目(这是字典列表)。该脚本最终将在250个条目处停止更新,即使该页面中仍然继续加载.acc文件。这表示为print(current==last),最终打印为True。我不知道为什么getEntries无法识别超过250项加载的内容。帮帮我吗?

代码:

script = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;"
url = 'https://www.iheart.com/live/kiss-108-1097/'

options = Options()
driver = webdriver.Firefox(options=options)
driver.get(url)

last= 0
for i in range(100):
     time.sleep(11)
     current = driver.execute_script(script)
     print(current==last)
     last=current

1 个答案:

答案 0 :(得分:0)

显然,根据对https://stackoverflow.com/a/45859018/6158174的回答,“通过性能条目获取网络请求只会使网络请求达到/直到页面加载,而无法轮询后续的异步/ ajax调用”。改用BrowserMob代理(https://github.com/lightbody/browsermob-proxy