def function_input():
....................
find_input.clear()
find_input.send_keys(i)
button.click()
time.sleep(5)
f_copy()
def f_copy():
element3 = driver.find_elements_by_xpath(" ")
l=[]
for element4 in element3:
element4_list = element4.text
l.append(pd.DataFrame(element4_list, columns=['a','b','c']))
pd.set_option('display.max_colwidth', -1)
df = pd.concat(l).reset_index(drop=True)
df['Input value'] = i
print(tabulate(df, headers='keys', tablefmt='psql'))
def loop_page():
find_next_button = driver.find_element_by_xpath(" ")
if 'no-next-page'in find_next_button.get_attribute(''):
pass
elif 'yes-next-page' in find_next_button.get_attribute(''):
find_next_button.click()
time.sleep(5)
f_copy()
else:
pass
for j in range(1, 5, 1):
i = j
f_copy()
loop_page()
我得到的结果是
>>>
+---+----+----+----+ #page 1 (input 1)
| | a | b | c |
+---|----+----+----+
| 0 | 3 | 1 | 21 |
+---+----+----+----+
+---+----+----+----+ #page 2 (input 1)
| | a | b | c |
+---|----+----+----+
| 0 | 5 | 8 | 41 |
+---+----+----+----+
+---+----+----+----+ #page 1 (input 2)
| | a | b | c |
+---|----+----+----+
| 0 | 3 | 3 | 3 |
+---+----+----+----+
>>>
我试过了df.concat
,但是桌子没有“分开”。
我尝试了所有可能的循环,仍然失败。
那是我最好的循环结果。
结果应该是,将每个页面的所有结果从每个输入返回到一个表中。
>>>
+---+----+----+----+
| | a | b | c |
+---|----+----+----+
| 0 | 3 | 1 | 21 |
+---+----+----+----+
| 0 | 5 | 8 | 41 |
+---+----+----+----+
| 0 | 3 | 3 | 3 |
+---+----+----+----+
>>>
答案 0 :(得分:0)
您必须使用要与新数据框一起追加的数据框pd.concat()
。将您的代码更改为 -
def f_copy():
element3 = driver.find_elements_by_xpath(" ")
l=[]
for element4 in element3:
element4_list = element4.text
l.append(pd.DataFrame(element4_list_2, columns=['a','b','c']))
l['Input value'] = i
pd.set_option('display.max_colwidth', -1)
df = pd.concat([df,l]).reset_index(drop=True)
print(tabulate(df, headers='keys', tablefmt='psql'))
另外,请确保您在循环外声明/初始化df
数据框,但在函数范围内,应该这样做。