LoginSignup
1
1

More than 1 year has passed since last update.

Webの勉強はじめてみた その16~HTTP通信と通信bot作成編~

Posted at

N予備校「プログラミング入門 Webアプリ」を受講しています。
今回は、第2章10節と11節になります。

HTTP通信

もっと具体的な内容だったりはたくさん情報があるのでそこで補完したい。

HTTPは、HyperText Transfer Protocolの略。 HTMLなどのHyperTextを受け渡すアプリケーション層のプロトコル。

サーバーに接続して、GETメソッドを実行する

nc nnn.ed.jp 80
nnn.ed.jp サーバーの 80 番ポートに接続する

GET / HTTP/1.1
HTTPのGETメソッド。
/(ドキュメントルート)の情報をHTTPプロトコル バージョン1.1で取得するという要求(リクエスト)。

400 Bad Request がレスポンスとして返ってくる。

Ubuntu上でHTTPサーバーを立ち上げる

python3 -m http.server 8000
Pythonを利用してサーバーを立ち上げる。

curl localhost:8000/index.html
コンソールからアクセスする

ポートフォワード

config.vm.network "forwarded_port", guest: 8000, host: 8000

仮想化された Ubuntu のポートへの通信を、実際に使っている Windows や Mac のポートに転送する設定。
外から(guest)8000番でubuntuにアクセスされたら自分の(host)8000番に転送する。

vagrant reload --provision
vagrant を再起動するとブラウザから確認できるようになる。

ポート番号が同じだから余計にややこしいような気がする。
ただ言いたいことはなんとなくわかる。

bot作成

bot : 自動的に何かしらの処理を行ってくれるプログラム RSS : Web サイトの見出しや要約を XML (Extensible Markup Language) というマークアップ言語で記述した形式

#!/bin/bash
dirname="/home/vagrant/workspace/itunes-topsong-rss"
#ディレクトリ作成
mkdir -p $dirname
#現在時刻のファイル名
filename="${dirname}/hourly-topsong-`date +'%Y%m%d%H%M'`.xml"
#RSS XMLを取得
curl -s -o $filename -H "User-Agent: CrawlBot; xxxx@xxxx" https://itunes.apple.com/jp/rss/topsongs/limit=10/xml
echo Save to $filename

mkdir -p
ディレクトリが既にある場合でもエラーを表示しない。

${dirname}
文字列の中で変数を使いたい場合、${}と記述する。

date +日付のフォーマット
バッククォートで囲うことでコマンドを実行できる。

nowdt=`date +'%Y%m%d%H%M'`

curl -s
転送情報などを出力しない

curl -o
実行結果を指定ファイルへ保存する

cronを使って自動化

プログラムを決められたスケジュールにあわせて自動実行してくれるプロセス

crontab -e
cronの設定ファイルを編集する

* * * * * /home/vagrant/workspace/bot/itunes-topsong.sh

冒頭の5つの*がそれぞれ、
Minute(分) Hour(時間) DayOfMonth(日) Month(月) DayOfWeek(曜日) を指す。

crontab をオプションなしで実行した場合は、Ctrl + C で抜けること

オプションなしで実行すると、

忘れたころにやってしまいそう。

まとめ

ネットワークについてはもっと掘り下げて勉強したい。

12節以降はGitHubの使い方なので、記事にはしにくいかも。
年内には第2章終わらせたい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1