[Python] 286 スクレイピング速度検証 curlコマンド

色々検証してきましたが、htmlのダウンロードについてはRequestsやseleniumを知らなくてもcurlコマンド1つでできるようです。あとはBeautifulSoupで解析すればOKです。

処理時間は私の検証条件ではhtml解析を経てcsv作成まで1件あたり0.23sでした。Requestsやlibcurlが0.35sなのでcurlコマンドが最速になります。

コードも簡潔になりますし、htmlをダウンロードする場合は馴染みのあるRequestsではなくcurlコマンドを採用します。

ただし、これまでと同様ループする場合はtime.sleep等で速度を制御しないとスクレイピング先に迷惑がかかるので要注意です。

ダウンロードせずにhtml解析&テキスト取り出しであれば、これまで通りRequestsになります。

<該当箇所のみ>
proc = subprocess.run("curl 'スクレイピング先のurl' > [出力先ファイル] ; echo '出力完了'", shell=True, stdout= subprocess.PIPE, stderr = subprocess.PIPE)
print(proc.stdout.decode('UTF-8'))

with open(出力先ファイル,encoding='EUC-JP',errors='ignore') as f:
    contents= f.read()
soup = BeautifulSoup(contents, "html.parser")