ホームページ >バックエンド開発 >PHPチュートリアル >PHPでタオバオの単一商品情報の収集・取得と商品情報の取得を実現_PHPチュートリアル

PHPでタオバオの単一商品情報の収集・取得と商品情報の取得を実現_PHPチュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-13 10:10:041228ブラウズ

PHPは淘宝網上の個々の商品情報の収集とキャプチャを実現し、商品情報をキャプチャします

タオバオのデータを呼び出すには、タオバオが提供する API を使用できます。自分の Web サイト上のタオバオの商品画像名やその他の公開情報のみを呼び出す必要がある場合は、PHP の file_get_contents 関数を使用して実現します。

感想:

file_get_contents(url) この関数は、http://www.baidu.com などの URL に基づいて Web ページのコンテンツ (ソース コード) を文字列 (文字列全体) の形式で出力し、次のような正規表現操作と連携します。 preg_match、preg_replaceなどとしてURLの特定のdiv、imgなどの情報を取得することが可能です。もちろん、タオバオの単一の商品ページの構造が固定されていることが前提です。たとえば、500 枚の写真の img の ID は J_ImgBooth です。

具体的な実装方法:(500枚の写真、名前、価格、属性、商品説明を取得)

コードをコピーします コードは次のとおりです:

$text=file_get_contents("http://item.taabao.com/item.htm?id=2380347279"); //URL アドレスのページコンテンツを $text に保存します

A. 500 枚の写真を入手:

コードをコピーします コードは次のとおりです:

preg_match('/]*id="J_ImgBooth"[^r]*rc="([^"]*)"[^>]*>/', $text, $img ); //通常のルールを使用して、img タグ内の ID J_ImgBooth を持つ画像をキャプチャします。$img[0] は 500 枚の画像の画像タグであり、$img[1] は 500 枚の画像の画像アドレスです。

B. 名前を取得:

コードをコピーします コードは次のとおりです:
preg_match('/([^<>]*)/', $text, $title); //テキスト内の商品名タグには特別なクラスやIDがないため、クロールが困難なため、タグ内の内容がキャプチャされるのが一般的です。 (実際には多少の違いがあります), $title [0]タイトルタグ全体 $title[1]タグの内容;<div class="code" id="code63641"> $title=iconv('GBK','UTF-8',$title);<br> //ウェブサイトが utf8 でエンコードされている場合は、トランスコードする必要があります (淘宝網は gbk でエンコードされています)<br> <br><br> <br> </div>C 価格を取得: <p> <strong></strong></p> <p>コードをコピーします</p> <div class="codetitle"> <span> コードは次のとおりです:<u></u></span> preg_match('/<([a-z]+)[^i]*id="J_StrPrice"[^>]*>([^<]*)</\1>/is', $text 、$価格);</div> //同様に、ID J_StrPrice のタグ コンテンツ $price[2] を取得します。$price[0] はタグ全体、$price[1] は強力なタグ名です。 $price=floatval($price);//それをデータベースに挿入し、おそらく変数の型を変更する必要があります<div class="code" id="code3162"> <br><br> <br><br>D. 属性を取得します: </div> <p>先ほど取得した内容は一つのタグにまとめられており、正規表現一つで取得できますが、<strong>などを取得したい場合は。 </strong></p> <p></p>コードをコピーします<p></p> <div class="codetitle"> コードは次のとおりです:<span><u></u> …</span> </div> <div id=”xxx”><div class="code" id="code84600"> <br /> …<br /> <br /> <ul><br> <br> …<br> <br> </ul><br> <br> <div>…<br> <br> <div>…<br> <br> </div><br> <br> </div><br> <br> </div><br> <br> …<br> <br><br> <br>特定の div に不明な <> タグが存在します。インターネットで検索すると、最も近いのは「/<([a-z]+)[^>」だけです。 ] *>([^<>]|(?R))*</\1>/"これは再帰を使用してタグのペアを取得しますが、特定のタグを取得できないため、簡単に class= を取得したいと考えています「属性」div、それはできません。ただし、淘宝網の Web ページには独自の特殊性があり、各タグの構造は基本的に固定されています...<div>...</div>背後のタグは </div><div id のいずれかです=”description”> または < /div><div> なので、回避策を使用して属性タグの内容を取得できます。 <br> <p></p>コードをコピーします<p></p> <div class="codetitle"> コードは次のとおりです:<span><div class="code" id="code66846"> <br> preg_match('/<(div)[^c]*class="attributes"[^>]*>.*</\1>/is', $text, $text0);<br> //この通常のルールでは、ページ全体の <div の先頭から最後の </div> タグがこの先頭部分にあります。 <br> <br> $text1=preg_replace("/</div>[^<]*<(div)[^c]*id="説明"[^>]*>.*</\1>/は","",$text0);<br> // </div ><div id="description"> を最後まで一致させ、それを "" に置き換えます (つまり、一致するものを削除します)。その後に説明が表示されていれば、目標は達成されています。 <br> <br> $attributes=preg_replace("/</div>[^<]*<(div)[^c]*class="box J_TBox"[^>]*>.*</\1> /は","",$text1);<br> //属性の後にボックス J_Tbox タグが続く場合、上記の手順を使用してボックス J_Tbox タグを削除する必要もあります。もちろん、属性の div の後に説明が続く場合、この手順は何も一致しません。 、何もしません。 <br> </div> <p><strong>E 説明を取得します: </strong></p> <p>上記の方法で、タオバオページ上のタグは簡単に取得できると思われますが(私も以前はそう思っていました)、この方法で説明を取得すると、取得するコンテンツは「説明の読み込み中」になります。 , この記述はソースコードにはありません。ページを開いて大量のjsを読み込むと、タオバオのどこからともなく読み込まれます。 </p> <p>それでは、それを真似して js を入れてみることもできます。説明を読み込むのに何が役立つかわかりませんか?大丈夫、完全に読み込まれている必要があります。どの div をそこに配置する必要があるのか​​わかりません。ソースコードを取得し、いくつかの div を削除して段階的に試してみると、「<div id="detail"> </div>」が見つかります</p> <p></p> <div class="codetitle"> <span><u>コードをコピーします</u></span> コードは次のとおりです:</div> <div class="code" id="code93549"> <br> <div id="説明"><br> <br> <div id="J_DivItemDesc">説明読み込み</div><br> <br> </div><br> </div> <p>これらの div は説明を読み込むのに必要なので、コードは次のとおりです: </p> <p></p> <div class="codetitle"> <span><u>コードをコピーします</u></span> コードは次のとおりです:</div> <div class="code" id="code13439"> <br> preg_match_all('/<script[^>]*>[^<]*</script>/is', $text, $content);// ページ js スクリプト<br> $content=$content[0];<br> $description='<div id="detail"> </div> <div id="説明"><br> <div id="J_DivItemDesc">説明読み込み</div><br> </div>';<br> foreach ($content as &$v){$description.=iconv('GBK','UTF-8',$v);};<br> //この $description をページに挿入すると、説明が自動的に読み込まれます。もちろん、同じページに複数の商品説明が配置されている場合、読み込まれるのは 1 つの説明だけです。 <br> <br> </div> <p align="left"></p> <div style="display:none;">http://www.bkjia.com/PHPjc/939398.html<span id="url" itemprop="url"></span>www.bkjia.com<span id="indexUrl" itemprop="indexUrl"></span>本当<span id="isOriginal" itemprop="isOriginal"></span>http://www.bkjia.com/PHPjc/939398.html<span id="isBasedOnUrl" itemprop="isBasedOnUrl"></span>技術記事<span id="genre" itemprop="genre"></span> PHP は、淘宝網上の単一の商品情報の収集とキャプチャを実装します。商品情報を収集し、淘宝網データを呼び出すには、淘宝網の商品画像名やその他の公開情報を呼び出す必要があるだけであれば、淘宝網が提供する API を使用できます。 <span id="description" itemprop="description"></span> </div></span> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="最新のコメントを ECShop に追加、最新のコメントを ECShop_PHP チュートリアルに追加" href="https://m.php.cn/ja/faq/292407.html">最新のコメントを ECShop に追加、最新のコメントを ECShop_PHP チュートリアルに追加</a></span><span>次の記事:<a class="dBlack" title="最新のコメントを ECShop に追加、最新のコメントを ECShop_PHP チュートリアルに追加" href="https://m.php.cn/ja/faq/292409.html">最新のコメントを ECShop に追加、最新のコメントを ECShop_PHP チュートリアルに追加</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="https://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>