Python Selenium Webdriver等待加载元素

时间:2018-11-11 19:49:57

标签: python-3.6 python-3.7

这个想法是要抓取一个网站。这样,我想通过屏幕截图将其抓取,然后从屏幕截图中提取数据。因为我想抓取的数据不在HTML代码中,并且老实说我不知道​​如何处理它(我对python / programming非常陌生)。

到目前为止,它工作正常,但是我遇到了WebDriverWait无法正常工作的问题。 那是网页:https://exporo.de/investment/betreutes-wohnen-huerth,详细来说,这是动态部分:

<div class="key">Bereits investiert</div>
<div class="value"
     ng-controller="pubSubController as pubSubCtrl"
     ng-show="pubSubCtrl.hasProject(2385)"
     ng-bind="pubSubCtrl.getProject(2385, 'total')"></div>

这是到目前为止的代码(循环):

while AktuellerWert1 < Endwert1:
        Zeit = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        driver1.get_screenshot_as_file(png_link % FileName1)

        img = Image.open(png_link % FileName1)
        PNG1 = image_to_string(img)
        PNG1_bearb = PNG1.split()
        AktuellerWert1 = PNG1_bearb[PNG1_bearb.index('investiert') + 1]
        Endwert1 = PNG1_bearb[PNG1_bearb.index('Finanzierungsziel') + 1]

        if AnfangsWert1 != AktuellerWert1:
            with open("/Users/davidoverbeck/Dropbox/Screen/Exporo/%s.csv" % FileName1, 'a') as csvFile:
                writer = csv.writer(csvFile)
                writer.writerow([AktuellerWert1, Zeit])
            print(AktuellerWert1)
        else:
            pass
        AnfangsWert1 = AktuellerWert1

        driver1.refresh()

        element = WebDriverWait(driver1, 2).until(EC.visibility_of_all_elements_located((By.XPATH, '/html/body/main/section[1]/section/div[2]/div[2]/div[1]/div[2]/div[10]/div[2]')))
    else:
        with open("/Users/davidoverbeck/Dropbox/Screen/Abgeschlossen.csv", 'a') as csvFile:
            writer = csv.writer(csvFile)
            writer.writerow([Zeit, FileName1])
        print(FileName1, 'abgeschlossen')
        driver1.close()

它可以正常工作2分钟,然后出现以下错误:

  

selenium.common.exceptions.TimeoutException:消息:   (背后没有消息?!)

我不确定循环是否会执行任何操作,或者如果循环正常工作,这是怎么回事?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

给我的印象是您要查找的数据在这里:

https://exporo.de/pubsub/initial

在这种情况下,无需解析html,则需要解析json。

请参见F12->网络标签->类型列= json