【发布时间】:2014-07-15 04:01:55
【问题描述】:
我正在抓取一个网站,www.lipperleaders.com。我想提取新加坡的资金细节。我已经成功实现了下拉选择并提取了提交选项后出现的第一页的内容。但是当我尝试转到下一页时(通过使代码单击下一步按钮)我收到错误'Element is no longer attached to the DOM'。
我的代码大约有 100 行,但我可以大致了解我的代码执行流程:
... # creating driver object and all the imports
def main():
...
result = find_elements_by_tag_name('span')
...
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
main()
main()
此代码适用于第一页,但在单击下一步按钮后再次调用 main() 时。在这种递归方法之前,我也尝试将它放在一个循环中,然后也是同样的错误。
如果我编写相同的代码,例如:
# some code
result = find_elements_by_tag_name('span')
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
# some code
driver.find_element_by_id("ctl00_ContentPlaceHolder1_ucDataPager_btnNext").click()
.
.
此代码工作正常,没有任何错误,下一页加载并执行之后编写的代码。但是我不能为 500 页写相同的driver.find_element_by_id().click(),即使我将不得不重复与每一页相关的其余代码。这就是为什么我尝试循环或递归,但它对我不起作用。
请让我知道我的方法有什么问题。
【问题讨论】:
标签: python selenium selenium-webdriver web-crawler