事前に取得した平均サイズ10kbのhtmlファイルが3万件あります.
これをBeautifulSoupによってループしつつスクレイピングしていく予定です.
ループを回しきるのにどのくらいかかるかなと思って,ちょっと以下のコードを書いてみました.
python
1from bs4 import BeautifulSoup ; import re ; import glob ; from collections import Counter 2html=glob.glob("htmls/*") 3uniques=set() 4#対象の重複無し一覧を取得 5for n in range(len(html)): 6 soup = BeautifulSoup(open(html[n]),"lxml") 7 uniques.add(header.find("div",class_="foo").text) 8#表示 9for n in uniques: 10 print(n)
結果,完了までの時間は30分ほどでした.
ちょっと時間がかかりすぎている印象で,調べてみたところ,記憶装置のランダムアクセス性能の低さを主因とする問題のようでした.
使っている記憶装置はSanDisk SSD Extreme PRO 480GBで,読み書き性能は次の通りです(amazonのコピペ)
シーケンシャル読出し速度 : 最大550MB/秒、シーケンシャル書込み速度 : 最大515MB/秒
ランダム読出し速度 : 最大100K IOPS、ランダム書込み速度 : 最大90K IOPS
なお処理中のCPUとメモリの負荷は最大10%程度です.
スクレイピングは初めてなんですが,速度的にはこのくらいが普通なんでしょうか?
小容量+大量ファイルを対象とするときは~~という書き方がある,というようなセオリーがあれば,教えてください.
例えば記憶装置間のファイル移動であれば,一度zipとかに纏めれば,ずっと高速ですよね.
BeautifulSoupや.その他pythonを使用したスクレイピング技術/手法にそのような機能やハウツーはありませんか?
回答1件
あなたの回答
tips
プレビュー