ホームページ  >  記事  >  バックエンド開発  >  クローラーの実践演習: PHP を使用して株式情報をクロールする

クローラーの実践演習: PHP を使用して株式情報をクロールする

王林
王林オリジナル
2023-06-13 17:32:051380ブラウズ

株式市場は常に大きな関心を集めています。日々の株価の上昇、下落、変化は投資家の意思決定に直接影響します。株式市場の最新動向を把握するには、タイムリーに株式情報を入手して分析する必要があります。従来の方法では、主要な金融 Web サイトを手動で開き、株価データを 1 つずつ表示していましたが、明らかに煩雑で非効率的でした。現時点では、クローラーは非常に効率的で自動化されたソリューションになっています。

次に、PHP を使用して、株式データを取得する簡単な株式クローラー プログラムを作成する方法を示します。

準備

クローラプログラムを作成する前に、次の作業を準備する必要があります。

  1. PHP開発環境のインストール
  2. PHP関連のインストールHTTP リクエスト ライブラリ
  3. HTML DOM の基本的な知識を理解する
  4. XPath 構文を理解する

このうち、HTTP リクエスト ライブラリは、HTTP リクエストを送信するために使用され、ターゲット Web サイトの HTML ソース コードを取得する; HTML DOM は HTML ページの解析と走査に使用されます; XPath は XML および HTML ドキュメント内で選択するための言語です。

プログラミング

クローラー プログラムの作成を開始する前に、ターゲット Web サイトの URL と取得する必要がある株式コードを知っておく必要があります。 Sina Finance を例にとると、その株式データの URL は次のとおりです。

http://finance.sina.com.cn/realstock/company/sh600000/nc.shtml

このうち、sh600000 は上海証券取引所の証券コードを表します。同様に、深セン証券取引所の証券コードは sz で始まります。取得する必要がある株式コードに基づいて URL を構築し、HTTP リクエスト ライブラリを使用して HTML ソース コードを取得できます。

HTML ソース コードを取得した後、HTML DOM パーサーを使用して HTML ページを解析し、XPath 構文を使用して必要なストック データをフィルターで除外する必要があります。この例では、株式の名前と現在の価格をフィルターで除外する必要があります。

最後に、取得した株式データを印刷します。具体的なコードは次のとおりです。

$code = 'sh600000'; // 股票代码
$url = 'http://finance.sina.com.cn/realstock/company/' . $code . '/nc.shtml'; // 构建URL

$html = file_get_contents($url); // 获取HTML源码
$dom = new DOMDocument();
@$dom->loadHTML($html); // 解析HTML

$xpath = new DOMXPath($dom);
$name = $xpath->query('//h1[@class="name"]/text()')->item(0)->nodeValue; // 筛选股票名称
$price = $xpath->query('//span[@class="price"]/text()')->item(0)->nodeValue; // 筛选当前价格

echo $name . '的当前价格为' . $price;

プログラム テスト

テストを実行する前に、HTTP 要求ライブラリと関連拡張機能がローカルの PHP 環境にインストールされていることを確認する必要があります。 Windows システムを例に挙げると、次のコマンドを使用してインストールできます。

composer require php-http/guzzle6-adapter
composer require php-http/message

次に、上海総合指数 (銘柄コード sh000001) の株価データを取得してみます。

$code = 'sh000001'; // 上证指数
$url = 'http://finance.sina.com.cn/realstock/company/' . $code . '/nc.shtml';

$client = new HttpAdapterGuzzle6Client();
$request = new HttpMessageRequest('GET', $url);
$response = $client->sendRequest($request);

$html = $response->getBody()->getContents();
$dom = new DOMDocument();
@$dom->loadHTML($html); // 解析HTML

$xpath = new DOMXPath($dom);
$name = $xpath->query('//h1[@class="name"]/text()')->item(0)->nodeValue;
$price = $xpath->query('//span[@class="price"]/text()')->item(0)->nodeValue;

echo $name . '的当前价格为' . $price;

コードを実行すると、コンソールに上海総合指数出力の現在の価格情報が表示されます。

プログラムの最適化

上記のコードは単なる例であり、実際のアプリケーションでは、最適化のために次の要素を考慮する必要があります。ネットワークの問題を処理するか、その他の理由で HTML ソース コードを取得できない。

    プログラムが実行されるたびに HTTP リクエストを送信することを避けるために、最近のアクセスの時点までにキャッシュすることができます。
  1. 無限ループを通じて複数の株式を監視し、株価が変化したときに自動的に電子メール通知をトリガーできます。
  2. つまり、株式クローラ プログラムを作成するには、セキュリティ、効率、実用性などの多くの側面を考慮する必要があり、最良の結果を達成するために設計および実装する必要があります。
リファレンス

[PHP HTTP クライアント · php-http.org](http://docs.php-http.org/en/latest/)

    [HTML DOM · w3school.com.cn](https://www.w3school.com.cn/php/php_ref_dom.asp)
  1. [XPath · zh.wikipedia.org](https:// zh.wikipedia.org/wiki/XPath)

以上がクローラーの実践演習: PHP を使用して株式情報をクロールするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。