我目前正在尝试抓取一个具有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)

最佳答案

最后一页可能没有Next按钮,或者至少是不可单击的(毕竟这是最后一页)。检查您是否在最后一页

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

关于python - 发布表格的最后一页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59771575/

10-13 03:09