我需要 table 地图中的数据,例如使用硒的键值对 python

I need to have table data in a map like key value pair using selenium python

我需要使用 selenium python 将以下 table 数据格式化为以下方式。 需要将该数据保存在地图中并需要将其与其他 table 数据进行比较。

Table数据https://www.w3schools.com/html/html_tables.asp

{"Country": ["Germany", "Mexico", "Austria", "UK", "Canada", "Italy"]
 "Company": ["Alfreds Futterkiste", "Centro comercial Moctezuma", soon..]
 "Contact": ["Maria Anders", "Francisco Chang", soon..]
}

我尝试了以下代码,但得到以下输出:仅显示第一个值。

任何人都可以告诉我我们该怎么做吗?

[('Company', 'Alfreds Futterkiste'), ('Contact', 'Maria Anders'), ('Country', 'Germany')]
from selenium import webdriver

header = []
body = []
driver = webdriver.Chrome()
driver.get("https://www.w3schools.com/html/html_tables.asp")
table = driver.find_elements_by_css_selector("table#customers tbody tr th")
tbody = driver.find_elements_by_css_selector("table#customers tbody tr td")
for row in table:
    header.append(row.text)
for t in tbody:
    body.append(t.text)
result = zip(header, body)
result_list = list(result)
print(result_list)
driver.quit()

使用 WebDriverWait() 并等待 table 可见,然后使用以下逻辑在字典中捕获 table 数据。

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

dictitem={}
driver = webdriver.Chrome()
driver.get("https://www.w3schools.com/html/html_tables.asp")
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"customers")))
table = driver.find_elements_by_css_selector("table#customers tbody tr th")
for i in range(len(table)):
    dictitem[table[i].text]=[item.text for item in driver.find_elements_by_xpath("//table[@id='customers']//tbody//tr//td[{}]".format(i+1))]
    
print(dictitem)

输出:

{'Company': ['Alfreds Futterkiste', 'Centro comercial Moctezuma', 'Ernst Handel', 'Island Trading', 'Laughing Bacchus Winecellars', 'Magazzini Alimentari Riuniti'], 'Country': ['Germany', 'Mexico', 'Austria', 'UK', 'Canada', 'Italy'], 'Contact': ['Maria Anders', 'Francisco Chang', 'Roland Mendel', 'Helen Bennett', 'Yoshi Tannamuri', 'Giovanni Rovelli']}

选项 2: 您也可以使用 python pandas。

import pandas as pd

df=pd.read_html("https://www.w3schools.com/html/html_tables.asp")[0]
print(df.to_dict())