セレンとphantomjsを使って約20ページの動的ページをチェックし、変更があったときに警告するスクリプトは、スクリーンショット部分がなくても速く動作しますが、ページのスクリーンショットを取得するには1-2私に警告し、スクリーンショットを取る時間。 Pythonでページの特定の部分のスクリーンショットを取得するためのより良い、より速い方法がありますか?Selenium Screenshot Works遅い(Python)
ここに私がスクリーンショットのために使用するコードがあります。
from selenium import webdriver
from PIL import Image
fox = webdriver.Firefox()
fox.get('http://stackoverflow.com/')
# now that we have the preliminary stuff out of the way time to get that image :D
element = fox.find_element_by_id('hlogo') # find part of the page you want image of
location = element.location
size = element.size
fox.save_screenshot('screenshot.png') # saves screenshot of entire page
fox.quit()
im = Image.open('screenshot.png') # uses PIL library to open image in memory
left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']
im = im.crop((left, top, right, bottom)) # defines crop points
im.save('screenshot.png') # saves new cropped image
は解決:問題はセレンモジュール、いずれかのスクリーンショットではありません。ファントムズについては ですが、クロムドライバーを使い始めた後は非常に速く、より多くは 効率的です。
ソリューションUPDATE:
phantomjsの問題は、画像を無効にしています。私が使用するとき
--load-images=no
私はメモリリークの問題に直面し、スクリプトはそれなしで実際には遅くなります は問題ありません。
を、あなたは時間がかかりすぎているあなたのコードのどの部分を決定しましたか? Seleniumのスクリーンショット、またはPILの作物?あなたはその時に何が起こっているのか判断しましたか?その時のCPUリソースはどうなっていますか? – SiKing
はい、私はしました。私がそれを閉じるまで、ファントムズのメモリは3GBに増加し、3GBに固執していましたが、アクティビティモニタで5GBを見たのですが、それは1回だけでしたし、消費するCPUもそれほど増えています。状況は確実ではありません。私は問題はSeleniumのスクリーンショット部分についてだと思います。なぜなら、私はそれをフォローして、フォルダー内の2番目に完全なイメージを切り抜くことができるからです。 – hzleonardo