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