有多个Content-child
。
但结果是1比1返回。
element1 = driver.find_element_by_xpath("//div[@id='Content']")
element2 = driver.find_elements_by_xpath("//div[@class='Content-child']")
for element3 in element2:
element3_list = element3.text
df = pd.DataFrame(element3_list, columns=['a','b','c'])
pd.set_option('display.max_colwidth', -1)
print(tabulate(df, headers='keys', tablefmt='psql'))
---- ---- RESULT
+--+----+----+----+
| | a | b | c |
+---|----+----+----+
| 0 | 3 | 1 | 21 |
+---+----+----+----+
+--+----+----+----+
| | a | b | c |
+---|----+----+----+
| 0 | 5 | 8 | 41 |
+---+----+----+----+
我的期望
+--+----+----+----+
| | a | b | c |
+---|----+----+----+
| 0 | 3 | 1 | 21 |
+---+----+----+----+
| 1 | 5 | 8 | 41 |
+---+----+----+----+
是循环错误还是有任何可以组合它的模块?
答案 0 :(得分:1)
您在for element3 in element2
循环的每个步骤中创建新数据框。然后打印这样创建的数据框。
您应该做的是在循环之前创建一个(可能为空)DataFrame ,然后使用append方法为每个element3
追加到现有数据框的行添加行,并且最终打印结果 离开循环。
BTW使用pd.concat
方法查看上述链接末尾的示例。这个应该是完美的满足您的需求。
答案 1 :(得分:1)
让我们将您的df
恢复为for循环中的list
l=[]
for element3 in element2:
element3_list = element3.text
l.append(pd.DataFrame(element3_list, columns=['a','b','c']))
df=pd.concat(l).reset_index(drop=True)