繁体   English   中英

我需要使用 selenium python 在 map 之类的键值对中包含表数据

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

我需要使用 selenium python 将下表数据格式化为以下方式。 需要将该数据保留在 map 中,并需要将其与其他表数据进行比较。

表数据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..]
}

我尝试了以下代码,但正在关注 output:仅显示第一个值。

谁能让我知道我们该怎么做?

[('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()并等待表可见并使用以下逻辑在字典中捕获表数据。

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)

Output

{'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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM