いつもお世話になっています。m(_ _)m
mac上で、pythonでseleniumを使ってスクレイピングをしているのですが、
最近になって急に、macをスリープさせる^1と上手く要素の属性値を取ることができなくなってしまいました。
macをスリープさせなければいいのでしょうけど、同一LAN内の他のパソコンからもアクセスさせている^2ので、四六時中スリープさせないとなるとスクリーンを消耗してしまうことになり、できれば画面だけでもスリープさせたいと考えています。
スリープしていない時は正常に動くのでコードの問題ではないと思います。
質問は数点です。
- macで任意にスクリーンだけロックさせることはできないのでしょうか?
調べてもどれも上手くいかないので良い方法があれば教えていただきたいです。
- ブラウザはFirefoxを使っているのですが、ヘッドレスモード?等に自動的になっているのでしょうか?
もしその場合回避方法はありますか?[^3]
[^3]: 追記 : 調べたところヘッドレスモードではないみたいですね。。ただやはり挙動がおかしくなるのはロック中です。
python
1import http.server 2import traceback 3 4try: 5 server_address = ("", 8000) 6 handler_class = http.server.CGIHTTPRequestHandler 7 handler_class.cgi_directories = ["/cgi-bin","/output/"] 8 server = http.server.HTTPServer(server_address, handler_class) 9 server.serve_forever() 10except: 11 traceback.print_exc()
発生しているエラー
python
1Traceback (most recent call last): 2 File "(省略)", line 77, in getAlbum 3 jpegUrl = root.xpath('//div[@class="_4rbun"]/img')[-1].attrib["src"] 4 File "src/lxml/lxml.etree.pyx", line 2467, in lxml.etree._Attrib.__getitem__ (src/lxml/lxml.etree.c:70664) 5KeyError: 'src'
img
要素なのにsrc
属性がないというエラーからわかると思いますが、コードの問題ではないはずで、またスリープ中に発生します。
そもそもスリープ中はスクリプトが動かないみたいなことを目にしたのですが、今までは普通に機能していましたので、おそらくスクリーンだけロックされた状態なら動いていたのだと思います。
内容的にどうしてもpythonのソースコードは載せられないです。その点は先に断っておきます。すみません。
何か少しでもご存知のことがありましたら、
回答よろしくお願いします。m(_ _)m
バージョン
mac OS : High Sierra (10.13.1) ※最近更新しました。
selenium : 3.5.0 ※pipより確認
Firefox : 52.4.1
python : 3.6.2
他にバージョンの確認が必要な項目があれば修正依頼ください。よろしくお願いします。m(_ _)m