我试图在网页中查找表格的位置,但没有表格的ID/XPATH/CLASSNAME
。我使用的是所需表格与网页中表格之间的相似性。当我使用element.size
/element.location
时,表格的位置和大小不正确。下面的任何解决方案或任何操作是否有误:
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(URL)
fn = lambda X: driver.execute_script('return document.body.parentNode.scroll' + X)
driver.set_window_size(1024, fn('Height'))
driver.save_screenshot("sample.png")
tables = driver.find_elements(By.TAG_NAME,"table")
for table in tables:
table_str = table.get_attribute("innerHTML")
similarity_tables = similarity(my_table_words,table_str)
if(similarity_tables>90):
th = table.size['height']
tw = table.size['width']
tx = table.location['x']
ty = table.location['y']
使用这段代码,我可以找到正确/所需的表,但返回的元素的位置和大小不正确。
1条答案
按热度按时间g6ll5ycj1#
我想装表花了很长时间。
因为Selenium是一个动态的网页自动化框架,它可以解决这个问题。
我告诉你我的诀窍。
睡眠时间()
位置_once_scrolled_into_view
在尝试获取表的位置和大小之前,可以尝试将页滚动到表。
x一个一个一个一个x一个一个二个x
使用非无头模式
您应该知道,headless浏览器中元素的
location
和size
可能与非headless浏览器中的不同。∮尽你所能∮
如果您已经使用了所有方法,但它们都不起作用,请尝试在自己提取大小的同时调整它们。
希望这个有用。