🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

3123閲覧

[C++] url先にアクセスして、データをtxtファイルに書き込みたい

lo12014

総合スコア8

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/10/24 03:39

お世話になります。c++初心者です。
現在、c++にて、以下のurlにアクセスし、この数値をtxtファイルに書き込み保存するプログラムを作ろうとしています。

リンク内容

調べていくうちに、curl,wsocket,スクレイピングなど断片的な情報は分かったのですが、プログラミングの筋道が全くたちません。どの知識を用いれば、実現可能かだけでもいいので教えていただけると幸いです。そこからは自力で挑戦し、つまづいたら改めてコードを添付し質問させていただきます。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2019/10/24 04:00

> 現在、c++にて、以下のurlにアクセスし、この数値をtxtファイルに書き込み保存するプログラムを作ろうとしています。 そのプログラムが出来たとすると、応用すると世界中のurlにアクセスして好きなように書き換えるプログラムが出来てしまうのではないですか? 実際には、アクセスするプログラムの他に、サーバサイドのプログラムが必要です。
dodox86

2019/10/24 04:07

yoorwmさんのコメントを読んでの確認なのですが、 > この数値をtxtファイルに書き込み保存する 作ったプログラムを起動したローカルPC上にファイルを書き込み保存する、と言う意味ですよね?>質問者さん
lo12014

2019/10/24 04:41 編集

dodox86様 はい。ローカルPC上でのみ使用します。上記URLのデータをもとに、数値計算するだけです。もちろん書き換えたりは致しません。私の知識が及ばず誤解を招いてしまい、大変申し訳ありませんでした。
dodox86

2019/10/24 04:42

コメントの追記ありがとうございます。そうであれば安心しました。回答の方はそのまま有効です。
guest

回答2

0

先の回答者であるcateyeさんがソケットを使ったHTTPクライアントでの方法を案内されているので、別の方法で。
curlコマンドやwgetコマンドを外部プログラムとして実行し、その実行結果と出力ファイルからデータを取り出すようなかたちでもできます。外部プログラムの起動は、C言語の標準関数としてはsystemexec系関数が使えます。Windows APIを使うならShellExecuteCreateProcessAPIでしょう。

少なくともご提示のURLから取得したデータはそんなに大きくて複雑なものには見えないので、スクレイピングはおおげさな気もします。ですが、htmlのパース(解析)とデータの抽出も含めるならそれもありかもしれません。

投稿2019/10/24 04:30

dodox86

総合スコア9254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

参考程度ですが・・・読み込めれば後はなんとかw

HTTPクライアントを作ってみる
HTTPクライアントの作成

投稿2019/10/24 04:11

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/10/24 04:21

この例ですと、質問者さんが提示したURLはhttps(SSL)なので、注意が必要です。 https://celestrak.com/satcat/tle.php?CATNR=25544 一応、当該サイトはhttp://... でもHTTPレスポンスとデータは返ってきていますが。
cateye

2019/10/24 04:27

こちらも参考に(https) →https://ja.wikipedia.org/wiki/HTTPS
cateye

2019/10/24 04:49 編集

ちょっと厳しいかもですね?・・・・ポート番号443に変えてやってみましたが・・・ usr ~/Project/test % ./a.out celestrak.com/satcat/tle.php?CATNR=25544 ./a.out: No match. とか <html> <head><title>400 The plain HTTP request was sent to HTTPS port</title></head> <body> <center><h1>400 Bad Request</h1></center> <center>The plain HTTP request was sent to HTTPS port</center> <hr><center>nginx/1.16.1</center> </body> </html> って帰ってきちゃいますーー; 勉強足らんなぁ^^;
lo12014

2019/10/24 07:35

お二方、ご回答ありがとうございます。dodox86様のご指摘通り、wgetコマンドをつかってやってみようと思います。(調べたところこちらの方が易しそうなので) しかし、私のパソコンでcurl, wgetコマンドが使えない状況にあり、困っています。(curl, wget が使えるように、インストールして、Path設定もしました。) まずはここからやってみようと思います。 他にもアドバイス等ありましたら、頂けると幸いです。 ありがとうございました。
dodox86

2019/10/24 08:17

> wgetコマンドをつかってやってみようと思います。 curlやwgetコマンドは、Windows環境だとそれぞれ別にインストールする必要があったりするので、面倒もあるかもしれませんね。最近ではwgetよりcurlの方が使われるケースが多いような気もしますが、どちらも知っておいて良いコマンドだと思います。ちなみにWindows 10のWSL環境下だとどちらも難なく使えました。 またもし、いずれかの回答で一段落されたのでしたら、BAをつけて閉じてください。
lo12014

2019/10/24 10:00

ありがとうございました。 windows8なので、難なく使うというわけにはいかなそうですが、 ねばってみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問