zoukankan      html  css  js  c++  java
  • bevol APP 平台爬取

    bevol 平台爬取

    import requests
    import time
    import os
    import openpyxl
    
    class Base_params:
    
        @property
        def headers(self):
            """
            headers
            :return:headers
            """
            return {
                # "User-Agent": 'okhttp/3/10.0'
                "User-Agent": 'Dalvik/2.1.0 (Linux; U; Android 7.1.2; Redmi 2A MIUI/V9.6.2.0.NCKCNFD) Resolution/720*1280 Version/5.45.0 Build/5450095 Device/(Xiaomi;Redmi 2A',
            }
    
        @property
        def now_time_stamp(self):
            """
            :return:当前时间戳
            """
            ntime = str(round(time.time(), 3))
            return ntime.replace('.', '')
    
    
    # 首页排行榜
    class Spider_beovl(Base_params):
    
        def __init__(self, r, pager, dataCategoryListsId, sheet):
            self.pager = pager
            self.dataCategoryListsId = dataCategoryListsId
            self.sheet = sheet
            self.good_list = []
            self.excel_name = 'bevol.xlsx'
            self.r = r
    
        @property
        def payload(self):
            """
            基本配置
            :return:配置参数
            """
            return {
                'uid': '10547754',
                'uuid': '866174733832030',
                'model': 'OPPO R11 Plus',
                'o': 'Android',
                'pageSize': 20,
                'req_timestamp': self.now_time_stamp,
                'pager': self.pager,
                'dataCategoryListsId': self.dataCategoryListsId
    
            }
    
        def synthesize_top_data(self):
            """
            综合榜
            :param url: 综合榜 url
            :return: 爬取的数据
            """
    
            url = 'https://api.bevol.com/data_category/list/'
            resp = requests.post(url, headers=self.headers, data=self.payload).json()
            try:
                for i in range(20):
                    title = resp['result']['list'][i]['title']
                    grade = resp['result']['list'][i]['grade']
                    like_num = resp['result']['list'][i]['likeNum']
                    not_like_num = resp['result']['list'][i]['notLikeNum']
                    collection_num = resp['result']['list'][i]['collectionNum']
                    comment_num = resp['result']['list'][i]['commentNum']
                    price_capacity = resp['result']['list'][i]['standardPriceCapacity']
                    image_url = resp['result']['list'][i]['imageSrc']
                    goods_info = {
                        f'{title}':[f'{grade}', f'{like_num}', f'{not_like_num}', f'{collection_num}', f'{comment_num}', f'{price_capacity}', f'{image_url}']
                    }
                    self.good_list.append(goods_info)
            except Exception as e:
                print('已到底')
            return self.good_list
    
        def save_excel(self):
            """
            存入Excel
            :return:是否存入成功
            """
            if not os.path.exists(self.excel_name):
                self.create_excel()
            workbook = openpyxl.load_workbook(self.excel_name)
            wb = workbook[self.sheet]
            wb['A1'] = '名称'
            wb['B1'] = '评分'
            wb['C1'] = '喜欢数'
            wb['D1'] = '不喜欢数'
            wb['E1'] = '收藏数'
            wb['F1'] = '评论数'
            wb['G1'] = '容量/价格'
            wb['H1'] = '图片链接'
            for i in self.good_list:
                self.r += 1
                for k, v in i.items():
                    wb[f'A{self.r}'] = k
                    wb[f'B{self.r}'] = v[0]
                    wb[f'C{self.r}'] = v[1]
                    wb[f'D{self.r}'] = v[2]
                    wb[f'E{self.r}'] = v[3]
                    wb[f'F{self.r}'] = v[4]
                    wb[f'G{self.r}'] = v[5]
                    wb[f'H{self.r}'] = v[6]
            workbook.save(self.excel_name)
    
    
        def create_excel(self):
            """
            创建表格
            :param sheet: sheet 名称
            :return:
            """
            workbook = openpyxl.Workbook()
            ws = workbook.active
            ws.title = self.sheet
            ws['A1'] = '名称'
            ws['B1'] = '评分'
            ws['C1'] = '喜欢数'
            ws['D1'] = '不喜欢数'
            ws['E1'] = '收藏数'
            ws['F1'] = '评论数'
            ws['G1'] = '容量/价格'
            ws['H1'] = '图片链接'
            workbook.save(self.excel_name)
    
    
    #           第几行   第几页    categoryId   什么榜
    # run = Spider_beovl(41, 2, 26, '新品榜')
    # run.synthesize_top_data()
    # run.save_excel()
    
    
    # 首页推荐
    class Home_recommend():
    
        def __init__(self, sheet, excel_name):
            self.sheet = sheet
            self.excel_name = excel_name
            self.good_list = []
    
        @property
        def headers(self):
            """
            headers
            :return:headers
            """
            return {
                "User-Agent": 'Dalvik/2.1.0 (Linux; U; Android 7.1.2; Redmi 2A MIUI/V9.6.2.0.NCKCNFD) Resolution/720*1280 Version/5.45.0 Build/5450095 Device/(Xiaomi;Redmi 2A',
            }
    
        @property
        def payload(self):
            return {
                'uid': '10547754',
                'uuid': '866174733832030',
                'imei': '1cae65c555f22ad73561b62b3451ede8',
                'model': 'OPPO R11 Plus',
                'o': 'Android',
                'sys_v':'5.1.1',
                'v': '4.1.1',
                'channel': 'yingyongbao',
                'opentime': '1594864081',
                'req_timestamp': 1594864163324,
                'pager': '1',
                'pageNum': '1',
                'signature': '2f56f216eea8f12848d5373052737fb7'
    
            }
    
        def home_recommend_crawl(self):
            url = 'https://api.bevol.com/auto/data2'
            resp = requests.post(url, headers=self.headers, data=self.payload).json()
            # print(resp)
    
            for i in range(40):
                try:
                    title = resp['result']['entityMap']['article'][i]['title']
                    article_url = resp['result']['entityMap']['article'][i]['h5url']
                    skinname = resp['result']['entityMap']['article'][i]['skinName']
                    try:
                        claim = resp['result']['entityMap']['goods'][i]['entityTag'][0]['name']
                        country = resp['result']['entityMap']['goods'][i]['entityTag'][1]['name']
                    except Exception as e:
                        claim = ''
                        country = ''
                    entity_image_src = resp['result']['entityMap']['article'][i]['entityImage']
                    content = resp['result']['entityMap']['comment'][i]['article']
                    goods_info = {
                        f'{title}': [f'{article_url}']
                    }
                    self.good_list.append(goods_info)
                except Exception as e:
                    print(e)
    
        def save_excel(self):
            """
            存入Excel
            :return:是否存入成功
            """
            r = 1
            print(self.good_list)
            if not os.path.exists(self.excel_name):
                self.create_excel()
            workbook = openpyxl.load_workbook(self.excel_name)
            wb = workbook[self.sheet]
            wb['A1'] = '名称'
            wb['B1'] = '文章链接'
            wb['C1'] = '皮肤特色'
            wb['D1'] = '图片链接'
            wb['E1'] = '评论内容'
            wb['F1'] = '图片链接'
            for i in self.good_list:
                r += 1
                for k, v in i.items():
                    ws = workbook.active
                    ws.title = self.sheet
                    wb[f'A{r}'] = k
                    wb[f'B{r}'] = v[0]
                    wb[f'C{r}'] = v[1]
                    wb[f'D{r}'] = v[2]
                    wb[f'E{r}'] = v[3]
                    wb[f'F{r}'] = v[4]
            workbook.save(self.excel_name)
    
        def create_excel(self):
            """
            创建表格
            :param sheet: sheet 名称
            :return:
            """
            workbook = openpyxl.Workbook()
            ws = workbook.active
            ws.title = self.sheet
            ws['A1'] = '名称'
            ws['B1'] = '文章链接'
            ws['C1'] = '皮肤特色'
            ws['D1'] = '图片链接'
            ws['E1'] = '评论内容'
            ws['F1'] = '图片链接'
            workbook.save(self.excel_name)
    
    
    # home_rec = Home_recommend('主页文章', '主页推荐.xlsx')
    # home_rec.home_recommend_crawl()
    # home_rec.save_excel()
    
    
    # 优惠低价中心
    class Low_price_centre(Base_params):
    
        def __init__(self, sheet, excel_name):
            self.sheet = sheet
            self.excel_name = excel_name
            self.good_list = []
    
    
        def low_price(self):
            url = 'https://api.bevol.com/cps/cpsWelfareList?uid=10547754&uuid=866174733832030&imei=1cae65c555f22ad73561b62b3451ede8&model=OPPO%20R11%20Plus&sys_v=5.1.1&v=4.1.1&o=Android&channel=yingyongbao&opentime=1594893672&req_timestamp=1594896096406&pager=3&pageSize=20&signature=1e9f9733dd0f9e92a19404c07b5d5773'
            resp = requests.post(url, headers=self.headers).json()
            for i in range(20):
                try:
                    title = resp['result'][i]['title']
                    grade = resp['result'][i]['grade']
                    reservePrice = resp['result'][i]['reservePrice']
                    discountPrice = resp['result'][i]['discountPrice']
                    channelLink = resp['result'][i]['channelLink']
                    goodsVolume = resp['result'][i]['goodsVolume']
                    content = resp['result'][i]['content']
                    goods_info = {
                        f'{title}': [f'{grade}', f'{reservePrice}', f'{discountPrice}', f'{channelLink}', f'{goodsVolume}',
                                     f'{content}']
                    }
                    self.good_list.append(goods_info)
                    print(title, grade)
                except Exception as e:
                    pass
    
        def save_excel(self):
            """
            存入Excel
            :return:是否存入成功
            """
            r = 1
            print(self.good_list)
            if not os.path.exists(self.excel_name):
                self.create_excel()
            workbook = openpyxl.load_workbook(self.excel_name)
            wb = workbook[self.sheet]
            wb['A1'] = '名称'
            wb['B1'] = '评分'
            wb['C1'] = '预计价格'
            wb['D1'] = '打折价格'
            wb['E1'] = '平台链接'
            wb['F1'] = '商品体积'
            wb['G1'] = '商品介绍'
            for i in self.good_list:
                r += 1
                for k, v in i.items():
                    ws = workbook.active
                    ws.title = self.sheet
                    wb[f'A{r}'] = k
                    wb[f'B{r}'] = v[0]
                    wb[f'C{r}'] = v[1]
                    wb[f'D{r}'] = v[2]
                    wb[f'E{r}'] = v[3]
                    wb[f'F{r}'] = v[4]
                    wb[f'G{r}'] = v[5]
            workbook.save(self.excel_name)
    
        def create_excel(self):
            """
            创建表格
            :param sheet: sheet 名称
            :return:
            """
            workbook = openpyxl.Workbook()
            ws = workbook.active
            ws.title = self.sheet
            ws['A1'] = '名称'
            ws['B1'] = '评分'
            ws['C1'] = '预计价格'
            ws['D1'] = '打折价格'
            ws['E1'] = '平台链接'
            ws['F1'] = '商品体积'
            ws['G1'] = '商品介绍'
            workbook.save(self.excel_name)
    
    run = Low_price_centre('有', '优惠中心.xlsx')
    run.low_price()
    run.save_excel()
    
    
    
    

  • 相关阅读:
    poj 2187 Beauty Contest(旋转卡壳)
    poj 2540 Hotter Colder(极角计算半平面交)
    poj 1279 Art Gallery(利用极角计算半平面交)
    poj 3384 Feng Shui(半平面交的联机算法)
    poj 1151 Atlantis(矩形面积并)
    zoj 1659 Mobile Phone Coverage(矩形面积并)
    uva 10213 How Many Pieces of Land (欧拉公式计算多面体)
    uva 190 Circle Through Three Points(三点求外心)
    zoj 1280 Intersecting Lines(两直线交点)
    poj 1041 John's trip(欧拉回路)
  • 原文地址:https://www.cnblogs.com/kai-/p/13418752.html
Copyright © 2011-2022 走看看