小野田?

基本事項 

スクレイピング・クローリングをする前に html,css,HTTPリクエスト・レスポンス, 正規表現の基礎知識が必要なので ない人は事前に習得しておく必要がある(各用語のリンクレベルの知識で一応OK)

必要モジュールのインストール 

pip install beautifulsoup4 (beautifulsoupだけだと旧バージョンになるので注意)
pip install lxml
pip install requests

javascriptが入ったページをスクレイピングしたい場合はPhantomJsとseleniumuの組み合わせが必要

基本的なことはこちら を見ればわかる

ちなみに上サイトは非効率なやり方で行っているので本格運用する場合はこの本もしくはこの本を読むことをオススメする

ちなみにBeautifulSoup4を使う場合内部で使うParserをlxmlに設定すると高速に解析できる

高速化したい場合 

まずどこでオーバーヘッドが発生しているかで以下の対策が取れる

上のものほどソフトウェア的であり, 下に行くほどハードウェアの問題となる

CPUバウンドの場合 

プログラム内部の処理を高速化したい場合はマルチスレッド・マルチプロセスに対応させる必要があるマルチスレッドは一つのコアで複数の処理を同時に行うことで マルチプロセスは複数のコアで並列にプログラムを処理させることである 例えば8コアのCPUの場合で2マルチスレッド, 8マルチプロセスだと 2(プロセスあたりのスレッド数)× 8(コア数) = 16となり 16個並列にプログラムが動いてることになる

やり方は各言語によって違うので各々調べるべし 例: JavaであるとThreadクラスを使う, Pythonならthreadingモジュールとmultiproccessingモジュールがある

IOバウンド 

データをwebから収集するレスポンスが遅い場合は非同期処理により待ち時間を有意義に使うことができる 詳しくはこちら

書き方の問題 

Pythonだとfor文の代わりにリスト内包記法を使うなどプログラムの記述によって 処理速度が多少変わる

言語の問題 

julia_benchmark.jpeg

プログラミング言語により速度が変わるので

スペックの問題 

単純にPCのスペックが低い可能性がある. 指導教員に相談しよう


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS