研究でデータ収集した時に学んだことを書き留めておく.
タイムアウトの設定
サーバでクローリングを行う時は,必ず設定しておかなければならない.
タイムアウトを設定していないと,何らかの原因でデータが取得できない時に,そこでプログラムが止まってしまう.
pythonでは,以下のように設定できる.
import socket socket.setdefaulttimeout(30) # 引数は秒数
executemany【sqlite3】
大量にデータを収集する時は,データごとにinsertするより,一気にinsertできるexecutemanyを使うのが速くてよい.
2倍くらい実行速度が違うらしい.
デタッチ
プログラムをバックグラウンドで動かし続けるには,通常nohupというコマンドを使うが,スクリーンのデタッチ(C-j d)の方が個人的にいいと思ってる.
nohupだと,プログラム実行時にコマンド指定しないといけないが,デタッチは実行途中でもおk.
要するにデタッチだと,「予想以上に実行に時間くってるけどもう帰らないといけない」的な時に途中でバックグラウンドジョブに変更できる.