ホームページ > バックエンド開発 > PHPチュートリアル > [解決済み] PHP は、Web ページのコード内で動的に表示されるデータ (Ajax) をどのようにキャプチャしますか?

[解決済み] PHP は、Web ページのコード内で動的に表示されるデータ (Ajax) をどのようにキャプチャしますか?

WBOY
リリース: 2016-06-23 14:28:07
オリジナル
1354 人が閲覧しました

この投稿の最終編集者は、qq37431300 2013-12-17 09:03:47 です

たとえば、タオバオの商品ページ:
http://item.taobao.com/item.htm?id=36221049162

価格: ¥596.00
プロモーションに参加: 年間の最低価格は ¥298.00
価格は Web ページの HTML コードに記載されていますが、プロモーションに参加するための Web ページの HTML には記載されていません。それをつかむ?

レンダリング:



解決しました。後ろに店舗の住所は必要ありません。
http://detailskip.taabao.com/json/sib.htm?itemId=36221049162&sellerId=110811289&p=1&rcid=16&sts=504983568,1170940490216898572,144678138062864512 028801320484867&chnl=pc&price=59600&shopId=&vd=1&skil=false&prior=1&ref=

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

この ajax によって生成されるようです
http://detailskip.taabao.com/json/sib.htm?itemId=36221049162&sellerId=110811289&p=1&rcid=16&sts=504983568,11709404902168 98572,144678138062864512 ,36028801320484867&chnl= pc&price=59600&shopId=&vd=1&skil=false&prior=1&ref=http://shop36048351.taabao.com




しかし、アドレスを直接開くと、価格が表示されないからでしょうか。パラメータが間違っているのでしょうか、それともタオバオが制限していて直接開けないのでしょうか?
では、その中の JSON データを取得するにはどうすればよいでしょうか?

解決しました。後ろに店舗の住所は必要ありません。
http://detailskip.taabao.com/json/sib.htm?itemId=36221049162&sellerId=110811289&p=1&rcid=16&sts=504983568,1170940490216898572,144678138062864512 028801320484867&chnl=pc&price=59600&shopId=&vd=1&skil=false&prior=1&ref=

おめでとうございます! ! ! ! !

オーナー、私もあなたと同じ問題に遭遇しましたが、あなたが言ったように後ろのストアアドレスを削除できません。理由は何ですか? このアドレス: http://detailskip.taabao.com/json/sib htm?itemId=36386887896&sellerId=196755313&p=1&rcid=16&sts=404230144,1170940438677291084,144185556853620864,70373045502979&chnl=pc&price =139 00&shopId=&vd=1&skil=false&pf=1&al=false&ap=0&ss=0&free=1&st=1&ct=1&prior=1&ref=

オーナーさん、私もあなたと同じ問題に遭遇しましたが、あなたが言ったように、このアドレス: http://detailskip.taabao.com/json/sib を削除できません。 ?itemId=36386887896&sellerId=196755313&p=1&rcid=16&sts=404230144,1170940438677291084,144185556853620864,70373045502979&chnl=pc&price=1 &shopId=&vd=1&skil=false&pf=1&al=false&ap=0&ss=0&free=1&st=1&ct=1&prior=1&ref=

さて、いいえ、取得するにはcurlを使用する必要があります。

functioncurl_taabao_detail($url) { //データ送信をシミュレートする関数
$ch =curl_init(); //CURL セッションを開始します
$header = array() //http ヘッダー配列
$header[] = 'Host :detail.taabao.com';
$header[] = 'ユーザーエージェント:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0'; :text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[] = 'Accept-Language:"en-Us,en;q=0.5" ';
$header[] = 'Accept-Encoding:"deflate"';
$header[] = 'リファラー:"http://www.taobao.com"';
$header[] = 'Cookie:mall_fp_ab =2012b; cq=ccp=1&p=*&s=0&f=0&g=0&t=0; _tb_token_=KYsNvQICZGpL; eaed2d1612e; pnm_cku822=008uZ+ZXOTBiNH0MRQyyh8Jj9nPuf +Zr9lfeqJ6|uqxpf0k/uS85fwk/Oa/JX4c =|u51Y4MWiOxFIIdhSd7KXsYeiZ0KFHPWvJQDYAA==|vIpP92FnosSSV0FnYUeClAKUgkdRd/H3MrSytHFnQVcBxLLEonqi|vauNSG17TTu9K z17DTs9q81b/fseCH54fmheCF54DkjOSN7Ivv jdBQ==|vqg++0N1sCYgpmMl4MUARoOVsGiw|v/n/+ Tw6/9kcer+p7+ksGkwq8g=='; $ header[] = 'Connection:keep-alive';

curl_setopt($ch, CURLOPT_URL, $url) //アクセスするアドレス
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 0); //返されたヘッダー領域の内容を表示します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) //取得された情報はファイルストリームに基づいています
curl_setopt($ch) , CURLOPT_TIMEOUT, 20); //無限ループを防ぐためにタイムアウト制限を設定します
$content =curl_exec($ch); //オペレーションを実行します
preg_match_all('/price:"(.*).00" /iU', $content , $goods_price); // 価格を取得します
$goods_price = $goods_price[1][0] : '??'
$curl_errno =curl_errno($ ch); =curl_error($ch);
curl_close($ch); //CURL セッションを閉じる
return $goods_price
}


オーナー、私もあなたと同じ問題に遭遇しましたが、あなたが言ったように後ろのストアアドレスを削除できません。理由は何ですか? このアドレス: http://detailskip.taabao.com/json/sib htm?itemId=36386887896&sellerId=196755313&p=1&rcid=16&sts=404230144,1170940438677291084,144185556853620864,70373045502979&chnl=pc&price =139 00&shopId=&vd=1&skil=false&pf=1&al=false&ap=0&ss=0&free=1&st=1&ct=1&prior=1&ref=

さて、は不可能です。取得するには、curl を使用する必要があります。

functioncurl_taabao_detail($url) { //データ送信をシミュレートする関数
$ch =curl_init(); //CURL セッションを開始します
$header = array() //http ヘッダー配列
$header[] = 'Host :detail.taabao.com';
$header[] = 'ユーザーエージェント:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0'; :text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[] = 'Accept-Language:"en-Us,en;q=0.5" ';
$header[] = 'Accept-Encoding:"deflate"';
$header[] = 'リファラー:"http://www.taobao.com"';
$header[] = 'Cookie:mall_fp_ab =2012b; cq=ccp=1&p=*&s=0&f=0&g=0&t=0; _tb_token_=KYsNvQICZGpL; eaed2d1612e; pnm_cku822=008uZ+ZXOTBiNH0MRQyyh8Jj9nPuf +Zr9lfeqJ6|uqxpf0k/uS85fwk/Oa/JX4c =|u51Y4MWiOxFIIdhSd7KXsYeiZ0KFHPWvJQDYAA==|vIpP92FnosSSV0FnYUeClAKUgkdRd/H3MrSytHFnQVcBxLLEonqi|vauNSG17TTu9K z17DTs9q81b/fseCH54fmheCF54DkjOSN7Ivv jdBQ==|vqg++0N1sCYgpmMl4MUARoOVsGiw|v/n/+ Tw6/9kcer+p7+ksGkwq8g=='; $ header[] = 'Connection:keep-alive';

curl_setopt($ch, CURLOPT_URL, $url) //アクセスするアドレス
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 0); //返されたヘッダー領域の内容を表示します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) //取得された情報はファイルストリームに基づいています
curl_setopt($ch) , CURLOPT_TIMEOUT, 20); //無限ループを防ぐためにタイムアウト制限を設定します
$content =curl_exec($ch); //オペレーションを実行します
preg_match_all('/price:"(.*).00" /iU', $content , $goods_price); // 価格を取得します
$goods_price = $goods_price[1][0] : '??'
$curl_errno =curl_errno($ ch); =curl_error($ch);
curl_close($ch); //CURL セッションを終了します
return $goods_price; //データを返します }

与えられたコードに従って URL を入力します: http: //detailskip.taabao.com/json/sib.htm?itemId=35277493308&sellerId=905487172&p=1&rcid=16&sts=337186​​818,1170936092103278604,72127962815692928,13 510803 217056771&chnl=pc&price=7900&shopId=&vd=1&skil=false&pf=1&al=false&ap =1&ss=0&free =0&st=1&ct=1&prior=1 どこか間違えたのでしょうか?



オーナー、私もあなたと同じ問題に遭遇しましたが、あなたが言ったように後ろのストアアドレスを削除できません。理由は何ですか? このアドレス: http://detailskip.taabao.com/json/ .htm?itemId=36386887896&sellerId=196755313&p=1&rcid=16&sts=404230144,1170940438677291084,144185556853620864,70373045502979&chnl=pc &price=1 3900&shopId=&vd=1&skil=false&pf=1&al=false&ap=0&ss=0&free=1&st=1&ct=1&prior=1&ref=

まあ、それは不可能です、それを取得するにはcurlを使用する必要があります。

functioncurl_taabao_detail($url) { //データ送信をシミュレートする関数
$ch =curl_init(); //CURL セッションを開始します
$header = array() //http ヘッダー配列
$header[] = 'Host :detail.taabao.com';
$header[] = 'ユーザーエージェント:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0'; :text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[] = 'Accept-Language:"en-Us,en;q=0.5" ';
$header[] = 'Accept-Encoding:"deflate"';
$header[] = 'リファラー:"http://www.taobao.com"';
$header[] = 'Cookie:mall_fp_ab =2012b; cq=ccp=1&p=*&s=0&f=0&g=0&t=0; _tb_token_=KYsNvQICZGpL; eaed2d1612e; pnm_cku822=008uZ+ZXOTBiNH0MRQyyh8Jj9nPuf +Zr9lfeqJ6|uqxpf0k/uS85fwk/Oa/JX4c =|u51Y4MWiOxFIIdhSd7KXsYeiZ0KFHPWvJQDYAA==|vIpP92FnosSSV0FnYUeClAKUgkdRd/H3MrSytHFnQVcBxLLEonqi|vauNSG17TTu9K z17DTs9q81b/fseCH54fmheCF54DkjOSN7Ivv jdBQ==|vqg++0N1sCYgpmMl4MUARoOVsGiw|v/n/+ Tw6/9kcer+p7+ksGkwq8g=='; $ header[] = 'Connection:keep-alive';

curl_setopt($ch, CURLOPT_URL, $url) //アクセスするアドレス
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 0); //返されたヘッダー領域の内容を表示します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) //取得された情報はファイルストリームに基づいています
curl_setopt($ch) , CURLOPT_TIMEOUT, 20); //無限ループを防ぐためにタイムアウト制限を設定します
$content =curl_exec($ch); //オペレーションを実行します
preg_match_all('/price:"(.*).00" /iU', $content , $goods_price); // 価格を取得します
$goods_price = $goods_price[1][0] : '??'
$curl_errno =curl_errno($ ch); =curl_error($ch);
curl_close($ch); //CURL セッションを終了します
return $goods_price; //データを返します }

与えられたコードに従って URL を入力します: http: //detailskip.taabao.com/json/sib.htm?itemId=35277493308&sellerId=905487172&p=1&rcid=16&sts=337186​​818,1170936092103278604,72127962815692928,13 510803 217056771&chnl=pc&price=7900&shopId=&vd=1&skil=false&pf=1&al=false&ap =1&ss=0&free =0&st=1&ct=1&prior=1 それも機能しません。どこか間違えましたか?
あなたの価格には小数点があります。自分で変更してください
preg_match_all('/price:"(.*).00" /iU' , $content, $goods_price); // 価格を取得します
に変更します preg_match_all('/price:"(.*)",/iU', $content, $goods_price) // 価格を取得します

17.90

をゲット




オーナー、私もあなたと同じ問題に遭遇しましたが、あなたが言ったように、後ろのストアアドレスを削除できません。理由は何ですか? sib.htm?itemId=36386887896&sellerId=196755313&p=1&rcid=16&sts=404230144,1170940438677291084,144185556853620864,70373045502979&chnl=pc &price =13900&shopId=&vd=1&skil=false&pf=1&al=false&ap=0&ss=0&free=1&st=1&ct=1&prior=1&ref=

それは不可能です。それを取得するには、curl を使用する必要があります。

functioncurl_taabao_detail($url) { //データ送信をシミュレートする関数
$ch =curl_init(); //CURL セッションを開始します
$header = array() //http ヘッダー配列
$header[] = 'Host :detail.taabao.com';
$header[] = 'ユーザーエージェント:Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0'; :text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[] = 'Accept-Language:"en-Us,en;q=0.5" ';
$header[] = 'Accept-Encoding:"deflate"';
$header[] = 'リファラー:"http://www.taobao.com"';
$header[] = 'Cookie:mall_fp_ab =2012b; cq=ccp=1&p=*&s=0&f=0&g=0&t=0; _tb_token_=KYsNvQICZGpL; eaed2d1612e; pnm_cku822=008uZ+ZXOTBiNH0MRQyyh8Jj9nPuf +Zr9lfeqJ6|uqxpf0k/uS85fwk/Oa/JX4c =|u51Y4MWiOxFIIdhSd7KXsYeiZ0KFHPWvJQDYAA==|vIpP92FnosSSV0FnYUeClAKUgkdRd/H3MrSytHFnQVcBxLLEonqi|vauNSG17TTu9K z17DTs9q81b/fseCH54fmheCF54DkjOSN7Ivv jdBQ==|vqg++0N1sCYgpmMl4MUARoOVsGiw|v/n/+ Tw6/9kcer+p7+ksGkwq8g=='; $ header[] = 'Connection:keep-alive';

curl_setopt($ch, CURLOPT_URL, $url) //アクセスするアドレス
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, 0); //返されたヘッダー領域の内容を表示します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) //取得された情報はファイルストリームに基づいています
curl_setopt($ch) , CURLOPT_TIMEOUT, 20); //無限ループを防ぐためにタイムアウト制限を設定します
$content =curl_exec($ch); //オペレーションを実行します
preg_match_all('/price:"(.*).00" /iU', $content , $goods_price); // 価格を取得します
$goods_price = $goods_price[1][0] : '??'
$curl_errno =curl_errno($ ch); =curl_error($ch);
curl_close($ch); //CURL セッションを終了します
return $goods_price; //データを返します }

与えられたコードに従って URL を入力します: http: //detailskip.taabao.com/json/sib.htm?itemId=35277493308&sellerId=905487172&p=1&rcid=16&sts=337186​​818,1170936092103278604,72127962815692928,13 510803 217056771&chnl=pc&price=7900&shopId=&vd=1&skil=false&pf=1&al=false&ap =1&ss=0&free =0&st=1&ct=1&prior=1 それも機能しません。どこか間違えましたか?
あなたの価格には小数点があります。自分で変更してください
preg_match_all('/price:"(.*).00" /iU' , $content, $goods_price); // 価格を取得します
に変更します preg_match_all('/price:"(.*)",/iU', $content, $goods_price) // 価格を取得します
get
17.90


先生、この php ファイルを私のメールアドレスに送っていただけますか、ありがとうございます!詳しく見てみたいので、310976780@qq.com

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