我在将所有数据都放入数据框中时遇到了问题,因此将同样的数据导入CSV
我有此代码:
class Table:
def __init__(self, driver):
self.driver = driver
def get_column_info(self):
column_info = []
columns = self.driver.find_elements_by_xpath("/html/body/div[1]/main/div[2]/div[3]/div/div/div[5]/div[2]/table/thead/tr/th")
for column in columns:
column_info.append(str(column.text.replace("%","")))
writer2.writerow(column_info)
return column_info
def get_results(self, index=None):
columns = self.get_column_info()
data = {}
elements = self.driver.find_elements_by_xpath("//div[@id = 'resumen_mensual']/table/tbody[@id = 'body_tmes' ]/tr[contains(@class, 'ini')]{}"
.format("[{}]".format(index)
for element in elements:
current_index = elements.index(element) + 1 if not index else index
parsed_data = {}
for column in columns:
value = element.find_element_by_xpath("//div[@id = 'resumen_mensual']/table/tbody[@id = 'body_tmes' ]/tr[contains(@class, 'ini')][{}]"
"/td[{}]"
.format(current_index,columns.index(column) + 1)).text
parsed_data.update({column: str(value)})
data.update(parsed_data)
return data
我的输出如下:
[{'DÍA':'30','T. MEDIA”:“ 25°C”,“ T。 MÁX:'35°C','T。 MÍN”:“ 15°C”,“ V。 MEDIA VIENTO”:“ 4.3 km / h”,“ RACHASMÁX”:“-km / h”,“PRESIÓNMEDIA”:“ 1012 hPa”,“ LLUVIA”:“-mm”}]
这只是我从网站的表格中提取的最后一行数据
如果我以此方式修改代码(修改在data.update中):
for element in elements:
current_index = elements.index(element) + 1 if not index else index
parsed_data = {}
for column in columns:
value = element.find_element_by_xpath("//div[@id = 'resumen_mensual']/table/tbody[@id = 'body_tmes' ]/tr[contains(@class, 'ini')][{}]"
"/td[{}]"
.format(current_index,columns.index(column) + 1)).text
parsed_data.update({column: str(value)})
data.update({current_index: parsed_data})
return data
我明白了:
[{1:{'DÍA':'1','T. MEDIA”:“ 14°C”,“ T。 MÁX:'19°C','T。 MÍN”:“ 8°C”,“ V。 MEDIA VIENTO”:“ 9.1 km / h”,“ RACHASMÁX”:“-km / h”,“PRESIÓNMEDIA”:“ 1027.3 hPa”,“ LLUVIA”:“-mm”},2:{'DÍA ':'2','T. MEDIA”:“ 17°C”,“ T。 MÁX:'22°C','T。 MÍN”:“ 9°C”,“ V。 MEDIA VIENTO”:“ 6.4 km / h”,“ RACHASMÁX”:“-km / h”,“PRESIÓNMEDIA”:“ 1026.4 hPa”,“ LLUVIA”:“-mm”},..... ......直到30
所以基本上我需要所有行,但是我不希望在数据之间出现行数(标有粗斜体的数字),所以我该怎么办?
[{ 1: {'DÍA':'1','T. MEDIA”:“ 14°C”,“ T。 MÁX:'19°C','T。 MÍN”:“ 8°C”,“ V。 MEDIA VIENTO”:“ 9.1 km / h”,“ RACHASMÁX”:“-km / h”,“PRESIÓNMEDIA”:“ 1027.3 hPa”,“ LLUVIA”:“-mm”}, 2: {'DÍA':'2','T. MEDIA”:“ 17°C”,“ T。 MÁX:'22°C','T。 MÍN”:“ 9°C”,“ V。 MEDIA VIENTO”:“ 6.4 km / h”,“ RACHASMÁX”:“-km / h”,“PRESIÓNMEDIA”:“ 1026.4 hPa”,“ LLUVIA”:“-mm”}, 3: {'DÍA':'3 ........
我应该更改什么,我知道它必须与循环有关,但是我无法弄清楚
答案 0 :(得分:0)
您正在使用字典,并且可以在键值对中使用。
这里有两个字典
parsed_data
data
因此,在第一种情况下,data.update(parsed_data)
只会得到最后一个值,因为您正在使用data
字典元素更新parsed_data
字典,并且每次都会覆盖它。
在第二种情况下,您要使添加到current_index
的每个字典(parsed_data
)的键都为唯一的data
,这就是为什么您要查看每个字典中具有唯一键的所有记录的原因( parsed_data
。