Selenium webdriver与python(陈旧元素参考)

时间:2017-04-27 22:04:34

标签: python selenium selenium-chromedriver

最近,我一直在尝试使用Python和Selenium chromedriver进行Web Scraping和Crawling。 它是一个reddit页面,有线程,每个线程都有一个标题。单击标题时,它将转到该特定线程。该主题包含描述和内容。

我想做什么:

  • 步骤1)访问reddit页面
  • 步骤2)扫描所有标题,将它们存储在一个数组中
  • 步骤3)循环标题数组
  • 中的每个项目
  • 步骤4)点击标题
  • 步骤5)获取说明
  • 步骤6)返回
  • 步骤7)如果有标题从第3步开始,请单击“下一步” 并得到下一页并从第1步开始。

我已经能够获得标题,甚至可以达到点击我的标题的程度。但当它返回时,它在这一行给我一个错误:数据['title']。在点击并返回页面一次后,在步骤3中追加(title.text)。并返回一条错误消息,指出:“消息:陈旧元素引用:元素未附加到页面文档”

无法调试此问题,因为我对python很新。任何帮助将不胜感激。

以下是代码:

for i in range(0,3):
    titles = []
    titles = browser.find_elements_by_css_selector(".title.may-blank")
    for title in titles:
        i = i+1
        try:
            data['title'].append(title.text)
        except KeyError:
            data['title'] = [title.text]
        title.click()
        description = browser.find_element_by_css_selector(".usertext-body.may-blank-within.md-container")
        print description.text
        browser.execute_script("window.history.go(-1)")
    button = browser.find_element_by_class_name("next-button")
    button.click()
print data['title']

1 个答案:

答案 0 :(得分:1)

每次导航到另一个页面时,您都需要找到元素。

我会稍微改变你的代码流程。不是点击标题,而是尝试获取href属性,然后导航到这些网址。

此外,我假设你通过Selenium来练习你的技能。如果没有,我建议Reddit API