Laravel 京东优惠券页面抓取店铺标题、券价格、券使用条件信息

阅读 (2584)
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
返回顶部