提取文本的不同方法"Benchmark"



我正试图提取221x7表格中的硒元素。由于我的第一种方法大约需要3秒,我想知道,在同一时刻,什么是最快的方法和最佳实践。

第一次:3.6秒

table_content = driver_lsx_watchlist.find_elements(By.XPATH, '''//*[@id="page_content"]/div/div/div/div/module/div/table/tbody''')
table_content = table_content[0].text
table_content = table_content.splitlines()
for i in range(0, len(table_content)):
print(f'{i} {table_content[i]}')

第二:大约200秒

for row in range(1, 222):
row_text = ''
for column in range (1,7):
xpath = '''//*[@id="page_content"]/div/div/div/div/module/div/table/tbody/tr[''' + str(row) + ''']/td[''' + str(column) + ''']/div'''
row_text = row_text + driver_lsx_watchlist.find_elements(By.XPATH, xpath)[0].text
print(row_text)

第三:超过4秒

print(driver_lsx_watchlist.find_element(By.XPATH, "/html/body").text)

第4次:0.2秒

ActionChains(driver_lsx_watchlist)
.key_down(Keys.CONTROL)
.send_keys("a")
.key_up(Keys.CONTROL)
.key_down(Keys.CONTROL)
.send_keys("c")
.key_up(Keys.CONTROL)
.perform()

由于剪贴板似乎是最快的,但由于剪贴板本身被进程占用,使我的电脑变得无用,我想知道最好的做法是什么,如果我在使用相同的电脑时在1秒内得到正确的解决方案。

要在网页中抓取表,您需要诱导WebDriverWait等待<table>元素的visibility_of_element_located((,并使用Pandas中的DataFrame可以使用以下定位器策略:

driver.execute("get", {'url': 'https://www.ls-x.de/de/watchlist'})
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-primary.accept"))).click()
data = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@id='page_content']/div/div/div/div/module/div/table"))).get_attribute("outerHTML")
df  = pd.read_html(data)
print(df)

注意:您必须添加以下导入:

import pandas as pd
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

相关内容

  • 没有找到相关文章

最新更新