Anonim

繰り返し日付を指定し、その後APIのリリースに失敗したため、私はこの問題を自分の手に委ねることにしました。 これは物事を行うための理想的な方法ではありませんが、今のところは機能することに注意してください。 最も人気のあるページのソーシャルグラフを作成して、どのような写真やコンテンツが視聴者の共感を呼んでいるかを把握したかったので、以下のスクリプトを思いついた後、データベース内のすべてのURLをループして、データを取得しました必要です。

ボタンコールアウトによって作成されたiframeにドリルダウンし、次のURLを思い付きました。
http://pinit-cdn..com/pinit.html?url = http://www.allrecipes.com
それは簡単でした。数値は、そこにある独自のdiv id CountBubbleに表示されます。 そこで私はそれをカールし、simple_html_dom phpライブラリを使用して解析しました。 しかし、0を返し続けました。 おっと! その番号は、ページがロードされた後にjavascriptで変更されます。 要素を検査する代わりにソースを表示する必要がありました。 そのため、代わりにソースを表示します。プログラミングの楽しみのために、この素​​晴らしいコードがそこにあります。

snode.setAttribute( 'src'、 '//api..com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);

それから、次のURLを収集して、おそらく必要なデータを取得します。
http://api..com/v1/urls/count.json?callback = receiveCount&url = http://www.allrecipes.com
表示されるもの:

receiveCount({"count":1148、 "url": "http://www.allrecipes.com"})

そのため、jsonデータは、まだ公開されていないAPIからの関数呼び出しにラップされています。 なんて都合のいい。 以下は、これをPHPで機能させるために必要なコードです。 サーバーでcURLを有効にする必要があります。

$ pinurl = "http://api..com/v1/urls/count.json?callback = receiveCount&url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl。= $ brandurl; $ html = pull_html($ pinurl); // cURLを呼び出す関数を介してhtmlを取得$ html = str_replace( "receiveCount("、 ""、$ html); //関数呼び出しを削除し、データは$ html = substr($ html、 ""にラップされます。 -1); $ = json_decode($ html); // jsonからphp配列に変換$ pincount = $-> count; echo $ pincount; //数値関数pull_html($ url){$ ch = curl_init() ; curl_setopt($ ch、CURLOPT_URL、$ url); curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1); curl_setopt($ ch、CURLOPT_CONNECTTIMEOUT、10); $ html = curl_exec($ ch); curl_close($ ch); return $ html ;}

ご覧のとおり、curlを使用してデータを取得し、jsonデータをラップしている関数呼び出しを削除します。 次に、json_decodeを使用してjsonデータをphp配列に変換するだけです。 出来上がり! 全部終わった。 これまでに約3, 000のURLを実行しましたが、データに問題はありませんでした。 設計が原因かどうかは不明ですが、少し遅いことがありました。 これを入力すると、データがプルされて保存されます。 ある時点で何らかのレート制限が行われると確信していますが、これまでのところどの壁にも遭遇していません。 たぶんこれはプログラマから隠されることすら想定されていないかもしれませんが、私が知る限り、あなたが彼らと一緒に仕事をすることを選んだ数少ない出版社の一人でなければ、公式のサポートはありません。

PHPでPinterestピンの数を取得する