Выпуск соскоба последней страницы Таблицы - PullRequest
1 голос
/ 16 января 2020

Я сейчас пытаюсь почистить внутреннюю таблицу веб-сайта, которая содержит 16 страниц. Когда я запускаю приведенный ниже код, таблица на последней странице не очищается, и я получаю следующую ошибку:

Traceback (most recent call last):
  File "C:/Users/mb4ig/PycharmProjects/Python/Test.py", line 56, in <module>
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next'))).click()
  File "C:\Users\mb4ig\Python\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

Когда я выбираю 15 страниц, код работает нормально и все 15/16 страниц столы скребутся. 16-я страница не очищена.

Пожалуйста, кто-нибудь может помочь. Спасибо.

page=1
max_page=16 # Only works when I select 15 pages but the last page isn't scraped.
name=[]
desc=[]

while page<=max_page:

 rows= WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH,"//*[@id='container']/table/tbody/tr")))
 for row in rows:
    name.append(row.find_element_by_xpath('./td[1]').text)
    desc.append(row.find_element_by_xpath('./td[2]').text)

 WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next'))).click()
 page=page+1
 print('navigate to page: ' + str(page))

driver.close()

df=pd.DataFrame({"Name":name,"Description":desc})
print(df)
df.to_csv('Test.txt',index=False)

1 Ответ

0 голосов
/ 16 января 2020

На последней странице, вероятно, нет кнопки Next, или, по крайней мере, она не активна (в конце концов, это последняя страница). Проверьте, находитесь ли вы на последней странице

if page < max_page
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next'))).click()
...