ホームページ > バックエンド開発 > PHPチュートリアル > Curl は強力であると主張していますが、Huaban.com のホームページを取得しようとしても成功しません。解決してください。 ! ! ! ! ! !

Curl は強力であると主張していますが、Huaban.com のホームページを取得しようとしても成功しません。解決してください。 ! ! ! ! ! !

WBOY
リリース: 2016-06-23 14:21:39
オリジナル
1640 人が閲覧しました

ページを取得するためにcurlを使用していましたが、これは非常に便利で、何度も試した結果うまくいきましたが、Huaban.comのホームページを取得するという一見単純な操作中に、それが成功しないことがわかりました。

基本的なコードは次のとおりです:
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL, 'http://huaban.com/');
//スパイダーをシミュレートします
//curl_setopt($ch, CURLOPT_USERAGENT, ' Mozilla/5.0 (互換性; Googlebot/2.​​1; +http://www.google.com/bot.html)');
//通常のブラウザをシミュレートします
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0) (互換性; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)');
//ログインせずにホームページに戻ることができるため、Cookie は必要ありません
//curl_setopt($ ch, CURLOPT_USERAGENT, '') ;
//実際には、ソースを無視してアドレスを直接入力することもできます
curl_setopt($ch, CURLOPT_REFERER, 'http://huaban.com/'); ($ch, CURLOPT_HTTPHEADER, $header);
//curl_setopt($ch, CURLOPT_HEADER, 0); // 出力ヘッダー
curl_exec($ch); );

さまざまな方法を繰り返し試しましたが、Cookie ヘッダー エージェントは、ブラウザーで開かれたような表示可能なページを返すことができず、file_get_contents('http://huaban.com/'); を試しても失敗しました。返されるコンテンツのほとんどは js コードですが、大小さまざまな Web サイトを含め、以前に正常にクロールされたページには js も含まれており、リモート クロールや表示には影響しません。 1 日試してみてもわかりませんでした。csdn qq グループでも議論しましたが、curl では js を実行できない可能性があるとのことです。しかし、現在 js コードが含まれていない Web サイトはどれですか? 以前にクロールされた Web サイトには js が含まれているものもたくさんあります。どれも失敗しませんでした。 。

解決方法が本当にわからないので、この質問を放棄して専門家の回答を求めます。 curlが動かないのか、このサイトが異常すぎるのか、やり方が間違っているのか。 。 。 。 。


ディスカッションへの返信 (解決策)


このようなエレガントで新鮮な Web サイトが、JS なしでこの熾烈な競争市場でどのように生き残ることができるでしょうか?

この Web サイトの特別な点は、そのコンテンツのほとんどが js によって動的に生成され、js とバックエンド プログラムの間の対話を通じて新しいコンテンツが常に生成されることです

したがって、curl でキャプチャされるのはその初期コードのみです。それは js の大部分です

この Web サイトの特別な点は、そのコンテンツのほとんどが js によって動的に生成されるということです
js とバックエンド プログラムの間の対話を通じて新しいコンテンツが常に生成されるということです

それで、curl で何がキャプチャされるのか。コードは JS の大きなセクションです


「JS はバックエンド プログラムと対話して新しいコンテンツを継続的に生成します」????
このプロセスはパケット キャプチャ プログラムを通じてキャプチャできると言われています。 ajax のコンテンツはキャプチャできますが、なぜキャプチャできないのでしょうか?
パケット キャプチャではアクセスが見つかりませんでした。当然のことながら、アクセス用のアドレスが必要です

これは必要なデータですか? パケットをどのようにキャプチャするかわかりません
{"filter":"pin:category:all","pins":[{"pin_id":8447271,"user_id":394332, " board_id":1146189,"file_id":3483249,"file":{"farm":"farm1","bucket":"hbimg","key":"a1524741e8fae0916ba04c8d231f8ad23173ddb5baeff-rNFCpP","type":"image/ jpeg ","幅":440,"高さ":5779,"フレーム":1},"メディアタイプ":0,"ソース":"weibo.com","リンク":"http://weibo.com / 2134919185/yoVlDsGWs","raw_text":"小さな電球の変形、あなたも作ることができます~","text_meta":{},"via":2,"via_user_id":0,"original": null," created_at":1340276725,"like_count":0,"comment_count":0,"repin_count":0,"is_private":0,"orig_source":"http://ww4.sinaimg.cn/bmiddle/7f404811jw1du5vv6dpnij .jpg" ,"user":{"user_id":394332,"username":"Havetogo","urlname":"shoji132136652610","created_at":1338984624,"avatar":{"id":3061779,"farm ":" farm1","bucket":"hbimg","key":"69d6d7842159946de9ca070c22da1714f259010afb4-WcVdOr","type":"image/jpeg","width":100,"height":100,"frames": 1}} ,"board":{"board_id":1146189,"user_id":394332,"title":"イノベーションの力","description":"","category_id":null,"seq":6, "pin_count ":1,"follow_count":0,"created_at":1340276719,"updated_at":1340276725,"is_private":0}},{"pin_id":8447272,"user_id":444560,"board_id":1146190 ," file_id":2064511,"file":{"farm":"farm1","bucket":"hbimg","key":"aa4fab086fe5887299cf17df48a250f9df25e375c95b-M4izBs","type":"image/jpeg","width ": 440,"高さ":566,"フレーム":1},"メディアタイプ":0,"ソース":"weibo.com","リンク":"http://weibo.com/2596178104/ycTQfusRg" ," raw_text":"スミレの色の理由: #京の知識普及# (61) マンガンの量と度合いから、元の翡翠鉱石に含まれる微量のマンガンが原因であると一般に考えられています。ジェダイト鉱石には確率論的な現象であるマンガンが含まれているため、その紫にはピンク紫、ナス紫、かご紫、多くの種類のスミレなど、さまざまな色合いがあります。 、紫翡翠の相対的な量は非常に少ないです。また、植栽の水が良い場合は、さらに少なくなるでしょう。","text_meta":{"tags":

....

私も同じ問題に遭遇しました。このページが送信後のデータをシミュレートできるかどうかわかりますか? アドレスは http://mixiaba.com/diy/iphoneok.asp?sid=null&pov=5 です

上の階でデータを送信しています。これは問題なく、実装も難しくありません。

しかし、肝心のホームページですが、データの送信はおろか、最も基本的なページすら開けず、投稿データのページも同様のようです。このウェブサイトは特別なプロセスを経ています。

パケットキャプチャはデータをキャプチャできますが、4階で提供されるデータはキャプチャできません。ブラウザで開くのとは効果が全く違います。データを投稿すると、このページは存在しないと直接返されます。

上の階では、qq スペース シミュレーションにデータを送信しています。これは問題なく、実装も難しくありません。

しかし、肝心のホームページですが、データの送信はおろか、最も基本的なページすら開けず、投稿データのページも同様のようです。このウェブサイトは特別なプロセスを経ています。

パケットキャプチャはデータをキャプチャできますが、4階で提供されるデータはキャプチャできますが、目に見えません。ブラウザで開くのとは効果が全く違います。データを投稿すると、このページは存在しないと直接返されます。

そのデータはホームページに表示されるコンテンツですか? 人々はデータを返し、その後、キャプチャされた HTML コードは何だと思いますか?

あなたが言ったように、上の階の人に聞きたいです。検索エンジンはまだスナップショットのコンテンツをキャプチャできないと言っています。Baidu、Google、Soso で花びらを検索して、静的な表示があるかどうかを確認できますか?どれもわかりやすく表示されています! ! ! !

ローカル ブラウザが表示される場合は、リモートから表示する方法があるはずです。

ブラウザ上でスクリーンショットを撮るのに技術的な問題はありません

わかりますか、検索エンジンはスクリーンショット、スナップショットはスクリーンショット、写真ですか?あなたのサイトに投稿して、私に知らせてください

検索エンジンがコンテンツをどのようにキャプチャするのか知りたいです 検索エンジンはコンテンツをキャプチャできるので、方法があるはずです

花びらのコードを注意深く見ていません。 、しかし、私が投稿したコンテンツはホームページのコンテンツであるはずです(それ以外の場合はそれを読む必要があります)。Baidu、Google などについては、基本的には私が言ったことと同じであるはずです。毎年多くの優秀な人材がいるのですか? プログラマーはクローラーを作成するのにもcurlを使用しているのでしょうか? そう思うと、私は何も言うことがありません

聞きたいのですが、上の階に行って、あなたの言ったことによると、検索エンジンはまだスナップショットのコンテンツをキャプチャできません。Baidu、Google、Soso で花びらを検索して、静的な表示があるかどうかを確認できますか。どれもわかりやすく表示されています! ! ! !

ローカル ブラウザが表示される場合は、リモートから表示する方法があるはずです。

元々は入って LM をプレイしたかったのですが…

さて、12 階について真剣に答えさせてください。
検索エンジンは、html/js/css/json のデータもキャプチャします。
4 階で提供されたものを含め、具体的には、ページはブラウザ側で分析することによって生成されます

Google がどのようにスナップショットを生成するかについては... Google は独自のブラウザを持っています。キャプチャされた html/js/css をページに解析するときに、何が問題になると思いますか。 ? ?

同様に、必要に応じて、キャプチャした js/html/css を使用してページを生成することもできますが、curl だけでは十分ではありません

すべてには常に解決策があり、大きな原則は役に立ちません。
あとはオンラインでログインするだけですが、データを送信することはできません

完了しました、皆さんありがとうございます

どうやって作成しましたか?私もあなたと同じ問題に遭遇しました、何が起こっていますか?

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート