【问题标题】:Issue scraping last page of a Table问题抓取表格的最后一页
【发布时间】:2020-05-03 09:50:40
【问题描述】:

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

【问题讨论】:

    标签: python selenium selenium-webdriver html-table


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢你!这非常有效,感谢闪电般的快速响应,它的速度快到我不能再接受你的回答了 4 分钟! :)
    猜你喜欢
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多