这个想法是要抓取一个网站。这样,我想通过屏幕截图将其抓取,然后从屏幕截图中提取数据。因为我想抓取的数据不在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:消息: (背后没有消息?!)
我不确定循环是否会执行任何操作,或者如果循环正常工作,这是怎么回事?
谢谢您的帮助!
答案 0 :(得分:0)
给我的印象是您要查找的数据在这里:
https://exporo.de/pubsub/initial。
在这种情况下,无需解析html,则需要解析json。
请参见F12->网络标签->类型列= json