Python Selenium: как собрать результаты после нажатия на каждую запись в таблице на сайте - PullRequest
0 голосов
/ 29 мая 2019

На сайте есть таблица, содержащая несколько элементов, по которым можно щелкнуть.

Каждый щелчок приведет меня на отдельную страницу с дополнительными результатами таблицы для соответствующего элемента.

Я хочу очиститьрезультаты таблицы для всех этих элементов с использованием Selenium в Python (также используйте 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_pd2: серия панд, которую я создал, включая текст всех элементов
  • В цикле for:
    • найдите и щелкните каждый элемент в таблице на веб-сайте
    • перейдите на всплывающую страницу с дополнительными результатами таблицы
    • получите результаты таблицыи сохраните их в pandas df с именем table_pd
    • , закройте текущую страницу и переключитесь обратно на исходную страницу для щелчка по следующему элементу

Проблема: - КакМогу ли я сохранить каждый из результатов в table_pd после каждого клика?Как я могу объединить весь table_pd в большой кадр данных панд?

Пожалуйста, подскажите, спасибо!

1 Ответ

0 голосов
/ 29 мая 2019

Попробуйте это ниже.

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...