我需要获取网页上每个元素的大小和位置。 如果我尝试过幼稚的方法,那会非常慢(通常,处理一些常见的页面(如www.amazon.com等)大约需要2分钟。)
是否有一些明显更快的方法来获取这些信息?
我天真的做法:
from selenium import webdriver
driver = webdriver.Chrome(..."\chromedriver.exe")
driver.get("https://www.amazon.com")
html = driver.find_element_by_tag_name('html')
for e in html.find_elements_by_css_selector("*"):
size = e.size
location = e.location
答案 0 :(得分:1)
我不确定您希望如何使用此信息,但是请使用javascript执行程序来运行以下Javascript。如果您需要其他格式的数据,请随意编辑它,但是您希望脚本使用它。获取所有这些信息大约需要1秒钟。
var returnValues = "";
var els = $("*:visible");
for(var x = 0; x < els.length; x++) {
returnValues += `${$(els[x]).height()},${$(els[x]).width()},${$(els[x]).position().left},${$(els[x]).position().top}|`;
console.log(`${$(els[x]).height()} x ${$(els[x]).width()}`);
console.log(`pos: x:${$(els[x]).position().left} y:${$(els[x]).position().top}`);
}
return returnValues;
这可以通过var results = driver.execute_script("Above javascript").split("|");