Skip to content

Instantly share code, notes, and snippets.

@wjfz
Created July 28, 2017 12:16
Show Gist options
  • Save wjfz/7c3c44fbb45315d30caf731e8f9e3be9 to your computer and use it in GitHub Desktop.
Save wjfz/7c3c44fbb45315d30caf731e8f9e3be9 to your computer and use it in GitHub Desktop.
jdjd
public function actionJd()
{
$first = JdSku::model()->find("fetched = 0");
echo $first->sku."\n\n";
$this->doFetch($first->sku);
$first->fetched = 1;
$saved = $first->save();
if ($saved == false) {
var_dump($first->getErrors());
return false;
}
sleep(rand(1,3));
//pclose(popen("cd /Users/wangjunfengze/Develop/php/qsq/frontend && ./app/yiic test jd >> /Users/wangjunfengze/jd.log &", 'r'));
echo "ok\n\n";
return true;
}
private function doFetch($sku)
{
$header[] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
$header[] = "Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.6,en;q=0.4";
$header[] = "Connection:keep-alive";
$header[] = "DNT:1";
$header[] = "Host:diviner.jd.com";
$header[] = "Upgrade-Insecure-Requests:1";
$ch = curl_init();
$options = array(
CURLOPT_URL => "https://diviner.jd.com/diviner?lid=1&lim=12&ec=utf-8&uuid=1501236808685830916046&pin=&p=902011&sku={$sku}&ck=pin&c1=1713&c2=3259&c3=3336&callback=jQuery3151661&_=1501239935627",
CURLOPT_TIMEOUT => 5,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_AUTOREFERER => false,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HEADER => false,
CURLOPT_COOKIE => '',
CURLOPT_ENCODING => 'gzip, deflate, br',
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',
CURLOPT_HTTPHEADER => $header
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
preg_match("|jQuery3151661\((.*)\)|", $result, $matches);
$skusJson = $matches[1];
$skus = json_decode($skusJson);
foreach ($skus->data as $product) {
$newSku = $product->sku;
echo $product->sku."\n";
echo $product->t."\n";
echo "原价:".$product->mp."\n";
echo "现价:".$product->jp."\n";
echo "".$product->img."\n";
$check = Yii::app()->db->createCommand()->select('id')->from('jd_sku')->where("sku = '$newSku'")->queryColumn();
if (empty($check)) {
$model = new JdSku();
$model->sku = $newSku;
$model->title = $product->t;
$model->mp = $product->mp;
$model->jp = $product->jp;
$model->img = $product->img;
$model->save();
echo "$newSku success\n\n";
} else {
echo "$newSku jump\n\n";
}
}
return true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment