Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 免费在线一区二区三区,91精品久久,国产免费视屏

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          python爬蟲,自動抓取商品購物券,剁手黨的福利

          python爬蟲,自動抓取商品購物券,剁手黨的福利

          天給大家分享一個小網站的數據采集,并寫到excel里面!

          分析網站

          目標網站是“小咪購”,這里有天貓所有的含有購物券的商品信息,我們今天就來抓它吧!

          隨便找一段文字,然后點擊右鍵查看網頁源代碼,看看是否存在該文字,如果存在,那么這個網頁就是靜態網站了!很幸運,這個網站居然是靜態的。

          那就簡單了,不需要去分析ajax加載數據或者找json包了,直接獲取網頁源代碼==>>匹配相關內容==>>保存數據即可!

          工具和庫

          Windows+python3.6

          import random

          import time

          import requests

          from lxml import etree

          import xlwt

          用這幾個庫就可以搞定了!注意xlwt和xlrd這2個庫都是操作excel的,一個是保存數據,一個是讀取數據,不要搞混了。

          開始寫代碼

          首先寫一個函數,將所有的爬蟲工作寫到函數里,如下圖

          這個網站需要寫上headers,不寫是抓不到數據的!新建一個列表,將爬到的相關數據寫入列表,它的形式大概是這樣的:【【產品信息A1,2,3……】,【產品信息B1,2,3……】……】,這么寫列表是因為我們最后要將他們寫如excel表格,那么列表中的每一個元素(還是列表形式)都是一行數據,方便寫入!

          注意第33行,列表構成的時候,用+連接會將所有列表中的元素放入一個列表,比如:【1,2,3】+【4,5】=【1,2,3,4,5】,而用append()函數則會將后面的內容作為一個元素加入列表中,比如:[1,2,3].append([4,5])=[1,2,3,[4,5]]

          下來就是寫入excel了,首先是新建excel表格,并寫入第一行數據

          后面的數據,依次按格式寫入并最后用wb.save(路徑)的方式保存即可!完整代碼及效果如下

          由于網站更新的很快(官方說是10分鐘。。。),所以也沒有抓取那么多,所有的頁面有大約600多頁,一頁100條信息,也就是說一共有6萬多條商品信息,如果不用多線程的話會很慢!

          代碼在上傳的過程中會有壓縮,如果實在看不清楚的話,大家可以私信我獲取源碼!

          文主要分享了如何設計一個可擴展的優惠券功能。

          一、功能特性介紹

          1.每個條件的代碼獨立,相當于單獨的實現類實現接口,就能通過配置添加到優惠券條件校驗當中,支持多種條件靈活組合

          2.新增一種使用條件可以不修改核心流程代碼,不需要增加數據庫表字段

          3.可實現優惠券區分客戶端展示,比如在APP可見可用,在小程序不可見不可用

          4.可實現優惠券查詢適用的商品列表

          二、核心代碼架構圖


          三、代碼實現

          1.數據庫表結構設計

          CREATE TABLE `mk_coupon_use_condition` (
           `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
           `bean_name` varchar(64) NOT NULL DEFAULT '' COMMENT 'bean名稱(UseCondition的實現類)',
           `descrpition` varchar(255) DEFAULT NULL COMMENT '描述',
           `remark` varchar(255) DEFAULT NULL COMMENT '備注',
           `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
           `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
           PRIMARY KEY (`id`) USING BTREE,
           UNIQUE KEY `uniq_beanname` (`bean_name`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='優惠券使用條件';
          
          CREATE TABLE `mk_coupon_template` (
           `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
           `name` varchar(128) NOT NULL DEFAULT '' COMMENT '優惠券名稱',
           `max_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '最大優惠金額(元)',
           `discount` decimal(12,2) NOT NULL DEFAULT '1.00' COMMENT '折扣',
           `condition_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '滿X元可用',
           `begin_time` datetime NOT NULL COMMENT '發放開始時間',
           `end_time` datetime NOT NULL COMMENT '發放結束時間',
           `period_type` varchar(8) NOT NULL DEFAULT '' COMMENT '有效期計算方式(fix:領券起X小時內有效,ps:固定開始時間-結束時間)',
           `total_num` int(11) NOT NULL DEFAULT '0' COMMENT '發放量',
           `left_num` int(11) NOT NULL DEFAULT '0' COMMENT '剩余量',
           `limit_num` int(11) NOT NULL DEFAULT '1' COMMENT '每用戶限領量',
           `use_description` text COMMENT '使用說明',
           `remark` varchar(255) DEFAULT NULL COMMENT '備注',
           `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
           `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
           PRIMARY KEY (`id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='優惠券模板';
          
          CREATE TABLE `mk_coupon_template_condition` (
           `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
           `coupon_template_id` int(11) NOT NULL COMMENT 'mk_coupon_template.id',
           `use_condition` varchar(32) NOT NULL DEFAULT '' COMMENT '使用條件(bean名稱,mk_coupon_use_condition.bean_name)',
           `use_condition_value` varchar(255) DEFAULT '' COMMENT '使用條件值',
           `remark` varchar(255) DEFAULT NULL COMMENT '備注',
           `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
           `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
           PRIMARY KEY (`id`),
           KEY `idx_coupontemplateid` (`coupon_template_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='優惠券模板-使用條件';
          
          CREATE TABLE `mk_user_coupon` (
           `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
           `user_id` int(11) NOT NULL COMMENT 'bu_user_info.id',
           `coupon_template_id` int(11) NOT NULL COMMENT 'mk_coupon_template.id',
           `name` varchar(128) NOT NULL DEFAULT '' COMMENT '優惠券名稱',
           `max_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '最大優惠金額',
           `discount` decimal(12,2) NOT NULL DEFAULT '1.00' COMMENT '折扣',
           `condition_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '滿X金額可用',
           `begin_time` datetime NOT NULL COMMENT '有效期開始時間',
           `end_time` datetime NOT NULL COMMENT '有效期結束時間',
           `status` varchar(8) NOT NULL DEFAULT '' COMMENT '狀態(nouse:未使用/已使用/已過期/未激活/已失效)',
           `max_num` int(11) NOT NULL COMMENT '最大疊加數',
           `remark` varchar(255) DEFAULT NULL COMMENT '備注',
           `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
           `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
           PRIMARY KEY (`id`) USING BTREE,
           KEY `idx_userid` (`user_id`),
           KEY `idx_coupontemplateid` (`coupon_template_id`)
          ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用戶優惠券';

          表說明:

          mk_coupon_use_condition:主要是記錄有哪些使用條件,代碼中配置優惠券模板時有用

          mk_coupon_template:優惠券發給用戶前得先有個模板做配置

          mk_coupon_template_condition:某個優惠券模板的使用條件(1對多),條件組合配置就是利用該表

          mk_user_coupon:實際給到用戶的優惠券,有未使用/已使用等狀態,冗余了一部分券模板的數據

          數據樣例說明:

          優惠券模板

          優惠券模板使用條件

          1)優惠券1只有1個條件CouponBaseCondition,可以理解為全場通用券,只要滿足了基本條件就可以使用

          2)優惠券2除了條件CouponBaseCondition,還有PlatformCondition,說明除了滿足基本條件,還需要滿足平臺是app才能使用

          3)優惠券3除了條件CouponBaseCondition,還有ProductCodeCondition,說明除了滿足基本條件,還需要滿足指定的商品編碼AB3301或AB3302才能使用

          2.抽象使用條件,定義一個接口,核心是canUse方法,另外2個方法有其他用途

          UseParam說明:

          例:如下為‘自動為用戶選擇最優的優惠券’的代碼調用,runtimeAttach設計為Map就是為了靈活接收各種參數:

          特殊業務場景說明:

          canSee方法:用于解決某張優惠券只有在APP能使用,但是在小程序不能使用的業務場景,利用canSee方法返回true/false決定是否展示該張優惠券,例

          filterProduct方法:用于解決根據某張優惠券查詢適用商品的功能,一些大型的電商平臺就提供該功能,方便用戶快速找到能夠使用該優惠券的商品列表,如果業務中不需要用到該功能可以忽略該方法

          3.核心代碼(UseCouponService)中提供4個方法(此處代碼過多,就不貼了,可以通過gitee查看源碼)

          1)用戶優惠券列表(未使用、即將過期、已使用、已過期)

          應用場景:用戶查看自己的優惠券列表

          2)用戶最優的可用優惠券

          應用場景:商品展示券后價、支付時自動為用戶選擇優惠券

          3)用戶可用優惠券列表

          應用場景:支付時展示選擇優惠券的列表

          4)判斷優惠券能否使用

          應用場景:創建訂單時校驗優惠券

          核心思想:遍歷優惠券的多個使用條件,判斷有1個條件不滿足就返回優惠券無法使用

          tips:此處利用CompletableFuture優化性能,實現了多線程并發判斷每個使用條件,只要有1個條件不滿足就立馬返回。

          4.如何新增1種使用條件?

          1)實現接口UseCondition,重寫canUse方法,以下為‘首單可用’使用條件的demo代碼

          把Bean名稱配置到券模板使用條件表mk_coupon_template_condition即可使用該條件,無需新增其他代碼。


          怎么樣?如果你覺得有用的話,還不快快收藏起來!!!


          附:涉及的代碼目錄

          github:https://github.com/897665787/springcloud-template

          gitee:https://gitee.com/jq_di/springcloud-template

          寶客多商戶系統APP源碼是一款針對淘寶客推廣人員和消費者的任務聚合平臺。通過該源碼,用戶可以方便地參與推廣任務、領取優惠券以及多商家購物。此外,該源碼還提供多商戶功能,允許商家開設自己的店鋪,增加銷售渠道和收益。

          產品特點:
          1. 任務聚合:淘寶客多商戶系統APP源碼集成了多種推廣任務,包括商品分享、邀請好友等,用戶可以根據自己的需求選擇參與任務,并享受相應的傭金獎勵。
          2. 優惠券領取:用戶可以在平臺上方便地搜索并領取淘寶、天貓等電商平臺的優惠券,享受更低價格購物的便利。
          3. 多商戶功能:商家可以在該系統中開設自己的店鋪,展示和銷售自己的商品,提升曝光度并增加銷售渠道和利潤。
          4. 購物便利性:用戶可以通過源碼提供的商品搜索功能,快速找到感興趣的商品,并可以直接在APP中完成下單和支付,提供便捷的購物體驗。
          5. 賬戶管理:用戶可以通過賬戶中心對自己的財務收入和推廣任務完成情況進行管理和查看,了解自己的收益情況。
          6. 社區互動:源碼中還具備社區功能,用戶可以在平臺上分享、評論和互動,獲取更多的推廣建議和經驗。

          淘寶客多商戶系統APP源碼為淘寶客推廣人員和消費者提供了更多的推廣機會和購物便利,幫助用戶提高收益并享受更多優惠。


          主站蜘蛛池模板: 国产精品久久亚洲一区二区 | 91午夜精品亚洲一区二区三区 | 亚欧在线精品免费观看一区| 亚洲一区二区三区自拍公司| 亚洲综合一区二区精品久久| 日本在线视频一区| 亚洲乱码一区二区三区国产精品 | 在线|一区二区三区四区| 中文字幕在线无码一区二区三区| 日韩精品一区二区三区在线观看l| 69福利视频一区二区| 99国产精品一区二区| 合区精品久久久中文字幕一区| 成人免费视频一区二区三区| 久久精品国产AV一区二区三区| 精品无码国产一区二区三区AV | 国产一区二区中文字幕| 一区在线免费观看| 精品一区二区高清在线观看| 日韩一区二区三区在线 | 性色av一区二区三区夜夜嗨| 成人免费av一区二区三区| 无码人妻一区二区三区免费视频| 日本一区二区高清不卡| 视频一区二区中文字幕| 福利一区二区视频| 亚洲中文字幕丝袜制服一区| 国产高清精品一区| 亚洲日韩国产一区二区三区| 国产激情一区二区三区 | 国产在线精品一区二区夜色 | 无码人妻精品一区二区蜜桃| 亚洲av日韩综合一区在线观看| 亚洲一区二区久久| 国产午夜精品片一区二区三区| 成人毛片无码一区二区| 国产精品盗摄一区二区在线| 一区 二区 三区 中文字幕| 福利一区在线视频| 国产精品无圣光一区二区| 少妇激情av一区二区|