記事"CURLを使用した HTML の解析"についてのディスカッション

 

新しい記事 CURLを使用した HTML の解析 はパブリッシュされました:

この記事では、サードパーティのコンポーネントを使用してライブラリを解析する簡単な HTML コードについて説明します。 特に、GET リクエストと POST リクエストでは取得できないデータにアクセスする方法について説明します。 ページが大きすぎないウェブサイトを選定し、該当サイトから興味深いデータを取得しましょう。

"要点は何でしょうか。" 簡単な解決策は、MQLスクリプトから直接サイトページにアクセスし、既知のページポジションにある既知の位置を読み取ることです。 その後、受信した文字列をさらに処理できます。 可能性のある方法の 1 つです。 しかし、この場合、MQL スクリプトコードはページのHTMLコードに密接にバインドされます。 HTML コードが変更された場合はどうなるでしょうか。 そのため、HTML ドキュメントを使用してツリーのような操作を可能にするパーサーが必要です (詳細については別のセクションで説明します)。 MQLでパーサーを実装する場合、パフォーマンスの面で便利で効率的でしょうか? このようなコードを適切に保守できるでしょうか。 そのため、解析関数は別のライブラリで実装します。 ただし、パーサーはすべての問題を解決するわけではありません。 必要な機能を実行します。 しかし、サイトのデザインが根本的に変更され、他のクラス名と属性を使用する場合はどうでしょうか。 この場合、検索オブジェクトまたはイベント複数のオブジェクトを変更する必要があります。 したがって、目標の1つは、できるだけ早く、最小限の労力で必要なコードを作成することです。 既製のパーツを使えば良くなります。 これより、デベロッパはコードを保持し、上記の状況に応じてすばやく編集できます。

ページが大きすぎないウェブサイトを選定し、該当サイトから興味深いデータを取得しましょう。 この場合、データの種類は重要ではありませんが、便利なツールを作成してみましょう。 もちろん、このデータはターミナルの MQL スクリプトで使用できる必要があります。 プログラム コードは標準DLLとして作成されます。

この記事では、非同期呼び出しとマルチスレッドを使用せずにツールを実装します。

作者: Andrei Novichkov

 

解析に何か制限はありますか?

私はこのビジネスについてよく知らないのですが、例えばこれらの テーブルからデータを解析したいのです。同時に、ページ上のカレンダーの日付を変更する必要があるのですが、記事のツールで実装可能でしょうか、それとも何か他のものが必要でしょうか?

Московская Биржа - Основные параметры срочного контракта
Московская Биржа - Основные параметры срочного контракта
  • www.moex.com
Влияем на развитие, создаем будущее
 
Aleksey Vyazmikin:

パースに制限はありますか?

私はこのビジネスについてよく知らないのですが、例えばこれらの テーブルからデータを解析したいのです。同時に、ページ上のカレンダーの日付を変更する必要があるのですが、記事のツールで実装可能でしょうか、それとも何か他のものが必要でしょうか?

解析のための単一のメカニズムを作ることは不可能です。記事を基礎として使うことができます。ページの解析と受信のためのライブラリも利用できます。この記事は、具体的な例でライブラリをどのように扱うかに焦点を当てています。そして、読者が混乱しないように、例は複雑ではない。私たちはページを入手し、それをパーサーに読み込ませる。ページの構造はどこでも違うので、それを考慮しなければならない。したがって、記事のコードを修正しなければならない。

 

颯爽とした展開だ!

andreiさん、次のことを教えてくれませんか?

1. このdll -GETANDPARSE.dllに 含まれるすべての関数の説明。

2. 各関数の呼び出し例

これなら、プロジェクトの 細部にまで立ち入らずに済みます、

そのため、あなたのプロジェクトを公開することもできません。


私はあなたのDLLを使って次のことをしたいです

1. SSLサイトからページを読み込む

2. それをファイルに書き込む

3.それを自分で解析する。

 
Denis Sartakov:

颯爽としたひねりだ。

こんにちは。

私のDLLの関数の説明は、あなたの役には立たないでしょう。残念ながら、そのようなDLLは「ページ依存」なのです。私のDLLは私が記事に書いたページだけを解析します。あなたができることは何もありません。すでに解析されたページから必要な情報を検索するアルゴリズムをDLLに組み込まなければなりません。 もちろん、それは毎回異なります。 それについては記事に書いてあります。検索スキームをどうにかして「一般化」し、強力なスタンドアロン・アプリケーション全体を手に入れましょう。新しいプロジェクトが 必要です。ページ検索にはkurlを使い、解析にはjimboを使う。あなたは、jimboが構築するツリーを実行し、必要な部分を見つけるだけでいい。そして2つ目。私のDLはチュートリアルだ。あまり知識のない読者、私より何でも知っている人をあてにしている。最小限のチェック、例外処理、コンバット・バリアントでは許されないことだ。

P.S. それでも、第10スタジオは更新される可能性がある。すでに2月にC++ 20がリリースされる予定なので、そろそろいい頃合いだろう。

 
Andrei Novichkov:

こんにちは。

私のDLLの関数の説明は、あなたの役には立たないでしょう。残念ながら、そのようなDLLは「ページ依存」なのです。私のDLLは、私が記事に書いたページだけを解析します。あなたができることは何もありません。すでに解析されたページから必要な情報を検索するアルゴリズムをDLLに組み込まなければなりません。 もちろん、それは毎回異なります。 それについては記事に書いてあります。検索スキームをどうにかして「一般化」し、強力なスタンドアロン・アプリケーション全体を手に入れましょう。新しいプロジェクトが必要です。ページ検索にはkurlを使い、解析にはjimboを使う。あなたは、jimboが構築するツリーを実行し、必要な部分を見つけるだけでいい。そして2つ目。私のDLはチュートリアルだ。あまり知識のない読者、私より何でも知っている人をあてにしている。最小限のチェック、例外処理、コンバット・バリアントでは許されない。

P.S. それでも、第10スタジオは更新される可能性がある。すでに2月にC++ 20がリリースされる予定なので、そろそろいい頃合いだろう。

ああ、ありがとう。

 

andreiさん、libcurlからこれをダウンロードする方法を教えてください。


libcurl-x32.dllとlibcurl-x32.libです。


いくつかのゴミがダウンロードされます...

libcurl.a - これはどのタイプですか?

 
Denis Sartakov:

andreiさん、libcurlからこれをダウンロードする方法を教えてください。


libcurl-x32.dllとlibcurl-x32.libです。


何かゴミがダウンロードされている......。

libcurl.a - これは何ですか?

よく見て、OSとビット数を選択する必要があります。32ビットバージョンは、おそらく libcurl.dll と呼ばれます。

ファイルを添付しましたが、まだ確認していません。

ファイル:
libcurl.zip  482 kb
 
Denis Sartakov:

あなたのDLLを以下の用途に使いたい。

1. SSLサイトからページを読む

2. それをファイルに書き込む

3.自分で解析する。

DLLがなくてもできる。WebRequestでダウンロードして何が悪い?MQL5で解析できる。HTML/XML用の様々な既成コードがある。一例として、このようなバリエーションが あります。

Извлечение структурированных данных из HTML-страниц с помощью CSS-селекторов
Извлечение структурированных данных из HTML-страниц с помощью CSS-селекторов
  • www.mql5.com
Среда разработки MetaTrader позволяет интегрировать программы и внешние данные, в частности, получаемые из сети Интернет через WebRequest. Наиболее универсальным и часто применяемым форматом данных в сети является HTML. В тех случаях, когда тот или иной публичный сервис не предоставляет открытый API для запросов или его протокол трудно...
 
Andrei Novichkov:

そこで注意深く見て、OSとビット数を選択する必要があります。32ビット版は、ほとんどの場合 libcurl.dll と呼ばれます。

ファイルを添付しましたが、まだ確認していません。

.libライブラリが必要です、

C++で独自のプロジェクトを 作成することができます。

 
Stanislav Korotky:

DLLなしでできます。WebRequest経由のダウンロードの何が問題なのか?MQL5で解析できる。HTML/XML用の様々な既成コードがあります。一例として、このようなバリエーションが あります。

パース - ここでの問題はまったくありません。

問題はただ一つ

1. SSLサイトのページをプログラムから読む


十分な実例が見つかりません。