Laravel 京东优惠券页面抓取店铺标题、券价格、券使用条件信息
阅读 (2575) 2018-05-08 11:15:19
Laravel 中使用DomCrawler请求京东优惠券页面获取页面中的数据信息
本代码仅供PHPer交流学习使用!
本代码仅供PHPer交流学习使用!
本代码仅供PHPer交流学习使用!
namespace App\Console\Commands;
use DB;
use Symfony\Component\DomCrawler\Crawler;
use Illuminate\Support\Facades\Redis;
use Illuminate\Console\Command;
class JdShopTitleCommands extends Command
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'jd_shop_title';
/**
* The console command description.
*
* @var string
*/
protected $description = '京东优惠券信息抓取';
public function __construct()
{
parent::__construct();
}
function handle() {
// 这里只是随便写的,我们访问某东优惠券页面的前题是需要券信息中的key和roleId
$result = DB::table('jd_goods') - > select(['key', 'role_id', 'id']) - > get();
foreach($result as $key => $item) {
if ($item - > promid && $item - > role_id) {
$url = 'http://coupon.m.jd.com/coupons/show.action?key='.$item - > key.
'&roleId='.$item - > role_id;
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_NOBODY, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_POST, 0);
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_COOKIE, '这里填写登录过后的cookie');
//执行命令
$res = curl_exec($curl);
//关闭URL请求
curl_close($curl);
$crawler = new Crawler();
$crawler - > addHtmlContent($res);
$shop_title = $crawler - > filter('.use-rule') - > text();
// 这个就是店铺标题了
$shop_title = trim(str_replace('东券', '', $shop_title));
$coupon_amount = $crawler - > filter('.money') - > text();
// 顺便可以抓个券金额
$coupon_amount = trim(str_replace('¥', '', $coupon_amount));
echo $coupon_amount."\n";
$coupon_start_fee = $crawler - > filter('.rule') - > text();
// 券的使用条件
$coupon_start_fee = trim(str_replace(['满', '可', '用'], '', $coupon_start_fee));
echo $coupon_start_fee."\n";
// 快速的连续请求会返回错误页面,京东做了访问限制
sleep(3);
}
}
}
}
更新于:2018-05-08 11:15:19