首页 > 解决方案 > Python Selenium:单击网站表格中的每条记录后如何抓取结果

问题描述

该网站有一个表格,其中包含多个可以单击的元素。

每次点击都会将我引导到一个单独的页面,该页面显示相应元素的其他表格结果。

我想在 Python 中使用 Selenium 抓取所有这些元素的表结果(也使用 BeautifulSoup 来解析 html 数据)。

以下是我当前的代码:

for i in range(table_pd2.shape[0]):

driver.find_element_by_link_text(table_pd2[0][i]).click()
driver.switch_to.window(driver.window_handles[1])

bs = BeautifulSoup(driver.page_source, 'html.parser')
table = bs.find_all('table', id='xxx')
table_pd = pd.read_html(str(table))
table_pd = table_pd[0]

driver.close()
driver.switch_to.window(driver.window_handles[0])

以下是我的逻辑:

问题: - 每次单击后如何将每个结果保存在 table_pd 中?如何将所有 table_pd 组合成一个大熊猫数据框?

请推荐,谢谢!

标签: pythonpandasseleniumselenium-webdriver

解决方案


在下面试试这个。

all_df = pd.DataFrame() #<====== created over all df
for i in range(table_pd2.shape[0]):

driver.find_element_by_link_text(table_pd2[0][i]).click()
driver.switch_to.window(driver.window_handles[1])

bs = BeautifulSoup(driver.page_source, 'html.parser')
table = bs.find_all('table', id='xxx')
table_pd = pd.read_html(str(table))
table_pd = table_pd[0]
all_df.append(table_pd) #<====== appending to over all df
driver.close()
driver.switch_to.window(driver.window_handles[0])

推荐阅读