jsoupを使いWEBサイトをスクレイピングするプログラムをJavaで創る [プログラミング]
やりたいこと
jsoupを使い、WEBサイトをスクレイピングするプログラムの基礎を学習したかった。追々、実現したいこと
- ショッピングサイトや価格サイトで商品情報を収集する
- ニュースサイトで自分が興味あるキーワードに合致するニュースを収集する
- オークションサイトで目当て商品の情報を収集する
- 近所の映画館の上映スケジュールを収集する
注意点
スクレイピングプログラムは、性質上、一回の実行で大量のリクエストを発行することが可能。そのため、実行周期やリクエスト数によってはDoS攻撃とみなされる場合があるので、節度を持った運用が必要。
実装
pom.xmlScrapingDemo.java
実行結果
最初の抽出では、検索結果から"h3"タグの要素のみを抽出している。要素は順不同で抽出しており、最後の2件については、検索結果のタイトルとは関係ない要素を抽出してしまっている。
2回目の抽出で、classが"LC20lb DKV0Md"の要素のみを抽出している。
"h3"タグの抽出結果から、更にclassが"LC20lb DKV0Md"の要素に絞られて抽出されているのが分かる。
FreeTTSを使いテキストを音声変換するプログラムをJavaで創る [プログラミング]
やりたいこと
喋らせたいテキストを読み込ませて、音声変換して出力する。実装
pom.xmlSpeechDemo.java
実行結果
残念ながら、FreeTTSは英文にしか対応しておらず、平仮名やカタカナ、漢字などといった日本語のテキストを読み込ませても、変換されない。だもんで、空耳アワーよろしく、そう聴こえる風な英文を読み込ませて、日本語っぽく喋らせてみた。
この手法を使えば、短い文章や単語なら、なんとかイケる気がする。
英文の場合はそれなりに喋るw
英文(Hello free text to speach)
再生できない場合、ダウンロードは🎵こちら
お帰りなさい(ork car early not sign)
再生できない場合、ダウンロードは🎵こちら
行ってらっしゃい(it terror shine)
再生できない場合、ダウンロードは🎵こちら
パスワード付きZIPファイルを作成し自動でメール送信するプログラムをJavaで創る [プログラミング]
やりたいこと
会社の経費申請が不定期に発生し、その都度、申請書をパスワード付きZIPファイルでメールで送信する必要があった。作った申請書ファイルをパスワード付きZIPファイルで圧縮し、メーラーを起動し、宛先を確認し、メール送信するという手順が面倒だったので自動化。
会社提供の経費申請書作成ツールを実行した後に、本プログラムを実行するようにして、少しだけ手間とミスを減らすのが目的。
参考
zip4jを使いZIPファイルをメモリ上で扱うプログラムをJavaで創る実装
pom.xmlメール送信の設定は、プロパティ形式のXMLファイルで定義しておく。
mail.xml
会社のメールサーバはSSL通信を使用していなかったので、上記の設定でメールを送信できた。
SSL送信の場合は、後述のプロパティが必要っぽい(未検証)。
SSL送信時の追加プロパティ
ZipDemo.java
zip4jを使いZIPファイルをメモリ上で扱うプログラムをJavaで創る [プログラミング]
やりたいこと
ファイルを指定しパスワード付きのZIPファイルを作成する。実装
後々、汎用的に使いたかったので、バイト配列で返すように実装する。本プログラムでは、ディレクトリは指定しない(てか、できない)。
今回、最終的にtest.zipというファイル名でZIPファイルを保存している。
pom.xml
ZipDemo.java
Wi-Fiの接続を検知して帰宅時にLINEにメッセージを送信するアプリをJavaで創る [プログラミング]
自分のスマートフォンがWi-Fiに接続されたのを検知するアプリをJavaで創る [プログラミング]
はじめに
今回は、ARPコマンドを使用し、同じセグメント内に任意の端末が存在するかを確認するプログラムを作成してみる。応用すると
例えば、帰宅時に自分のスマートフォンがWi-Fiに接続されたのを検知し、白物家電を起動したり自宅の出入りの時間を記録したりできる。実装
ルータの設定なのか不明だが、単純にARPコマンドを発行しただけではARPテーブルが更新されておらず、端末を発見する事ができなかった。なので、ARPコマンドの前にpingを発行し、無理矢理ARPテーブルを更新するようにした。
ルータの設定などで回避できるなら、pingは不要。
ArpDemo.java
LINE Messaging APIを使いメッセージを送信するアプリをJavaで創る [プログラミング]
はじめに
JavaからLINE Messaging APIでメッセージをプッシュしてみたかったので、調査をしながらプログラミングしてみた。BOTの作成と動作確認
LINE Developersの登録
LINE Developersの登録については、いろんなサイトで紹介されているので、ここでは割愛。 大まかな流れは後述の通り。- 開発者アカウント作成
- プロバイダ新規作成
- チャネル(BOT)新規作成
BOTの動作確認
LINE Developersのトップページから、プロバイダ→チャネル→Messaging API設定タブと選択する。 2020.08.02時点で、応答メッセージ・あいさつメッセージがデフォルトで有効になっているのを確認。 QRコードを読み込んで、BOTをトークに追加してみる。 応答メッセージ・あいさつメッセージが動作することを確認。 今後のプログラミングで、応答メッセージが発動すると邪魔なので、応答メッセージを無効にしておく。プログラミング
チャネルアクセストークンとユーザIDの取得
プロバイダ→チャネル→Messaging API設定タブと選択していき、チャネルアクセストークン(長期)の発行ボタンでチャネルアクセストークンを発行し控えておく。 プロバイダ→チャネル→チャネル基本設定タブと選択していき、ユーザIDを控えておく。Maven
2020.08.02時点での最新バージョンは後述の通り。pom.xml
メッセージ送信プログラムの実装
LineMessagingClientを使って、自分のチャネルにメッセージを送信するプログラムを作成。 channelTokenとtoは、それぞれ控えておいたチャネルアクセストークンとユーザIDを使用する。LineDemo.java