WebサイトからDTMプラグインセール記事をスクレイピングし、結果をHTMLに出力します。
DTMプラグインセール記事をまとめている複数のWebサイトをスクレイピングし、セール記事を収集します。 以下のWebサイトからセール記事を集めます。
収集したセール記事には以下の処理がおこなわれます。
- タグの自動付与
- セール期限の自動抽出
- 日付順ソート
収集結果はHTMLで出力されるので、Webブラウザでセール情報を閲覧できます。
- Python 3.7.0以上の実行環境
- Pythonサードパーティパッケージ
- Requests
- Beautiful Soup 4
web_scraper.py
を実行し、スクレイピングをおこないます。-n
オプションで、各サイトからのセール記事取得件数N
を指定できます。スクレイピングするWebサイトの数をM
とすると、N * M
個のセール記事を収集した後、そこから終了済みのセール記事を差し引いたものが最終的な収集結果となります。収集結果はarticles.pickle
へ出力されます。
$ python3 script/web_scraper.py -n 100
> Scraping is started. (Run parallelly)
> HTTP GET Request takes 0.353474 [sec] (source : https://computermusic.jp/category/セール/)
> HTTP GET Request takes 0.348843 [sec] (source : https://sawayakatrip.com/category/dtm・daw関連記事/sale)
> HTTP GET Request takes 0.546751 [sec] (source : https://computermusic.jp/category/%E3%82%BB%E3%83%BC%E3%83%AB/page/2/)
⋮
> HTTP GET Request takes 1.683039 [sec] (source : http://melodealer.com/vstbuzz-bigkick-by-plugin-boutique-50per-off-sale/)
> HTTP GET Request takes 1.492022 [sec] (source : http://melodealer.com/vstbuzz-96-off-ultimate-rmx-30k-bundle/)
> HTTP GET Request takes 1.583438 [sec] (source : http://melodealer.com/ik-multimedia-20year/)
> Scraping finished. Scraping takes 189.67374396324158 [sec]
> Results saved to DTMer's-Wallet-Breaker/articles.pickle
html_generater.py
を実行し、収集結果を表示するためのHTMLを生成します。生成の際、1.で出力されたarticles.pickle
が必要です。-ob(open browser)
オプションをつけると、生成されたHTMLをWebブラウザで自動で開いてくれます。なお、HTMLファイルはhtml
ディレクトリの下に生成されます。
$ python3 script/html_generater.py -ob
2.で-ob
オプションをつけると、全セール記事のページが表示されます。
右側に表示されているタグをクリックすると、タグによる絞り込み結果が表示されます。絞り込みに使ったタグは、セール記事件数の右側に表示されます。
各タグの()内の数字は、そのタグが付与されたセール記事の件数です。
タグ付けについては、tags.txt
に書かれたタグ文字列が読み込まれ、記事のタイトルまたは説明文にタグ文字列が含まれているとそのタグが付与されます。どのタグにもマッチしなかった記事には"None"タグが付与されます。
ユーザによってtags.txt
へ新しいタグを追記することも可能です。
None
Ableton
Ableton Live
Accusonus
Addictive Drums
Addictive Keys
⋮
ドラム
バイオリン
ブラックフライデー
ベース
ボーカル
ピアノ
ページのフッターにはスクレイピングしたデータの最終更新日時が表示されます。データが古いと感じたら1.のスクレイピングを実行しましょう。