ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して Baidu の検索結果の取得をシミュレートし、それらを Baidu などのクライアントに送信するにはどうすればよいですか?

PHP を使用して Baidu の検索結果の取得をシミュレートし、それらを Baidu などのクライアントに送信するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 13:21:091140ブラウズ

[http://m.baidu.com][Baidu モバイル端末に基づいて、主にこのモバイル端末をテストします]
300 KB 以上の Baidu 検索結果を取得するリンクを直接シミュレートし、クライアントのブラウザにプッシュしますGzip 圧縮にも約 100KB かかり、1.0 秒近くかかります。しかし、Baidu 自身がブラウザに最初に取得するコンテンツはわずか約 30 KB です。どうして百度と同じになれるのでしょうか。 Baidu の検索結果を取得するために PHP でいくつかの方法を試しましたが、スタイルやすべてが一緒に読み込まれます。
例:
$url="http://m.baidu.com /s?word=".$kw;
$html=file_get_contents($url);
//$html > 300KB
//Apache Web ページが圧縮されてブラウザに送信された後も、まだ 97.8KB が残っています


最初の get には実際にはスタイルがあります

しかし、Baidu 自体によって送信される実際の最初の get はわずか 30.3 KB であり、最初にスタイルがありません


ブラウザ自体にスタイルをロードするように、クライアントブラウザにどのようにプッシュできますか?議論 (解決済み) 解決策)

質問は少し長いので、すべてを理解できないかもしれません

300K から 30K に圧縮したい場合は、2 つの重要なポイントがあります:

1: あなた。リクエストヘッダーに Accept-Encoding: を追加する必要があります。gzip、deflate、sdch、これは 100K を返します、gzip デコードは完了します

2: Baidu ホームページにアクセスした Cookie を持ってくるので、30K になります。具体的な方法は、Cookie を一度キャプチャしてファイルにキャッシュし、クエリ時にこれらの Cookie をすべて持ち込むことです。

ちょっとわかりにくいようです。具体的なアプローチは何ですか?コードを直接投稿していただけますか?

【上記の質問の意味は、自分のページにBaidu検索エンジンを入れ子にしたいのですが、取得した検索結果を二次処理して表示する必要があるのですが、この処理に非常に時間がかかります。クロール後に初めて消費される時間、二次処理の時間 [これは制御可能]、表示するページにプッシュするのにかかる時間 (このプッシュ ファイルは Baidu ほど小さくすることはできません)] 少し長いので、完全ではないかもしれません。読んでください
Baidu モバイル Web ページを分析しました。300K から 30K に圧縮したい場合は、2 つの重要なポイントがあります:

1: Accept-Encoding: gzip を追加する必要があります。リクエストヘッダーにdeflate,sdchを追加すると100Kが返され、gzipデコードが完了します

2:BaiduのホームページにアクセスしたCookieを持ってくるので30Kになります。具体的な方法は、Cookie を一度キャプチャしてファイルにキャッシュし、クエリ時にこれらの Cookie をすべて持ち込むことです。


少しわかりにくいようです。具体的なアプローチは何ですか?コードを直接投稿していただけますか?
【上記の質問の意味は、自分のページにBaidu検索エンジンを入れ子にしたいのですが、取得した検索結果を二次処理して表示する必要があるのですが、この処理に非常に時間がかかります。クロール後に初めて消費される時間、二次処理の時間 [これは制御可能]、表示するページにプッシュするのにかかる時間 (このプッシュ ファイルは Baidu ほど小さくありません)]

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