我是Python新手中的selenium。我试图从其网站https://my.morrisons.com/storefinder/8获取超市(商店/加油站/药房/咖啡馆)每个部分的营业时间。信息仅在选择(展开)每个部分时显示。
我看到Chrome开发者工具中提供了详细信息,但我无法使用Beautifulsoup或urllib解析它们。我不确定是不是因为它是由Javascript动态生成的。
我做了一些研究并尝试使用不同方法的selenium,例如find_element_by_xpath和find_element_by_link,但是,它们都不能帮我找到那些折叠部分或实际的开放时间信息。
有人可以就如何解决这个问题给我一些指导吗?非常感谢你。
答案 0 :(得分:-1)
使用Selenium,您应该等待页面加载,然后找到面板并单击它并抓住时间。 在JS上这个代码对我有用(假设浏览器是selenium web驱动程序并且加载了请求的页面)
await browser.wait(until.elementLocated(By.css('.according-markers.ng-scope')));
var panels = await browser.findElements(By.css('.according-markers.ng-scope'));
for(let panel of panels){
await panel.findElement(By.css('a')).click();
let hoursEl = await panel.findElements(By.css('span.ng-binding'));
let hours = await Promise.all(hoursEl.map(function(el) { return el.getText()}));
console.log(hours);
}