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]タグの内容;
$title=iconv('GBK','UTF-8',$title);
//ウェブサイトが utf8 でエンコードされている場合は、トランスコードする必要があります (淘宝網は gbk でエンコードされています)
C 価格を取得:
コードをコピーします
コードは次のとおりです:
preg_match('/<([a-z]+)[^i]*id="J_StrPrice"[^>]*>([^<]*)\1>/is', $text 、$価格);
//同様に、ID J_StrPrice のタグ コンテンツ $price[2] を取得します。$price[0] はタグ全体、$price[1] は強力なタグ名です。
$price=floatval($price);//それをデータベースに挿入し、おそらく変数の型を変更する必要があります
D. 属性を取得します:
先ほど取得した内容は一つのタグにまとめられており、正規表現一つで取得できますが、などを取得したい場合は。
コードをコピーします
コードは次のとおりです:
…
…
特定の div に不明な <> タグが存在します。インターネットで検索すると、最も近いのは「/<([a-z]+)[^>」だけです。 ] *>([^<>]|(?R))*\1>/"これは再帰を使用してタグのペアを取得しますが、特定のタグを取得できないため、簡単に class= を取得したいと考えています「属性」div、それはできません。ただし、淘宝網の Web ページには独自の特殊性があり、各タグの構造は基本的に固定されています...
...
背後のタグは
または < /div>
なので、回避策を使用して属性タグの内容を取得できます。
コードをコピーします
コードは次のとおりです:
preg_match('/<(div)[^c]*class="attributes"[^>]*>.*\1>/is', $text, $text0);
//この通常のルールでは、ページ全体の
タグがこの先頭部分にあります。
$text1=preg_replace("/
[^<]*<(div)[^c]*id="説明"[^>]*>.*\1>/は","",$text0);
//
を最後まで一致させ、それを "" に置き換えます (つまり、一致するものを削除します)。その後に説明が表示されていれば、目標は達成されています。
$attributes=preg_replace("/
[^<]*<(div)[^c]*class="box J_TBox"[^>]*>.*\1> /は","",$text1);
//属性の後にボックス J_Tbox タグが続く場合、上記の手順を使用してボックス J_Tbox タグを削除する必要もあります。もちろん、属性の div の後に説明が続く場合、この手順は何も一致しません。 、何もしません。
E 説明を取得します:
上記の方法で、タオバオページ上のタグは簡単に取得できると思われますが(私も以前はそう思っていました)、この方法で説明を取得すると、取得するコンテンツは「説明の読み込み中」になります。 , この記述はソースコードにはありません。ページを開いて大量のjsを読み込むと、タオバオのどこからともなく読み込まれます。
それでは、それを真似して js を入れてみることもできます。説明を読み込むのに何が役立つかわかりませんか?大丈夫、完全に読み込まれている必要があります。どの div をそこに配置する必要があるのかわかりません。ソースコードを取得し、いくつかの div を削除して段階的に試してみると、「
」が見つかります
コードをコピーします コードは次のとおりです:
これらの div は説明を読み込むのに必要なので、コードは次のとおりです:
コードをコピーします コードは次のとおりです:
preg_match_all('//is', $text, $content);// ページ js スクリプト
$content=$content[0];
$description='
';
foreach ($content as &$v){$description.=iconv('GBK','UTF-8',$v);};
//この $description をページに挿入すると、説明が自動的に読み込まれます。もちろん、同じページに複数の商品説明が配置されている場合、読み込まれるのは 1 つの説明だけです。
http://www.bkjia.com/PHPjc/939398.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/939398.html技術記事 PHP は、淘宝網上の単一の商品情報の収集とキャプチャを実装します。商品情報を収集し、淘宝網データを呼び出すには、淘宝網の商品画像名やその他の公開情報を呼び出す必要があるだけであれば、淘宝網が提供する API を使用できます。