示例#1
0
def getTryProductList(allTryProducts, user, prop, page):
    url = 'https://try.jd.com/activity/getActivityList?page={0}&activityType=1&activityState=0&cids={1}'.format(
        page, prop["cids"])
    user["headers"].update({
        "Host": "try.jd.com",
        "Referer": url
    })
    totalPage = 1

    try:
        response = request.openUrl(url, user, {})
        # logger.info("all try product url:{0}".format(url))

        content = str(response.read(), 'utf-8')
        # logger.info("html content response:{0}".format(content))
        soup = BeautifulSoup(content, "html.parser")

        for result in soup.find_all('li', {"class": "item"}):
            # logger.info("result:{0}".format(result))
            # time.sleep(1)

            activityId = result.get("activity_id")
            # logger.info("activityId:{0}".format(activityId))
            if activityId is not None:
                allTryProducts.append(activityId)
        logger.info("账户:{0}获取到所有试用产品如下:{1}".format(user["phone"],allTryProducts))

        for result in soup.find_all('span', {"class": "p-skip"}):
            totalPage = int(result.em.b.get_text(strip=True))
            logger.info("账户:{0}中url:{1}总页数:{2}".format(user["phone"], url, totalPage))

    except Exception as ex:
        logger.error("账户:{0}获取已申请试用产品时报错, 产品url:{1}, message:{2}".format(user["phone"],url, ex))

    return totalPage
示例#2
0
def signFreeBeautyTry(prod, user):
    url = 'https://i.meituan.com/beauty-salvia/try-center/tryresult.html'
    params = {
        "token": user["token"],
        "longitude": "*",
        "lng": "*",
        "latitude": "*",
        "lat": "*",
        "dpid": "",
        "channel": "10",
        "category": "0",
        "catid": "22",
        "utm_source": "rb",
        "cityid": "30",
        "ci": "30",
        "mina_name": "",
        "productid": prod["id"],
        "source": "",
        "shopid": prod.get("shopId", ''),
        "mobile": user["phone"],
        "utm_source": "rb",
        "utm_medium": "iphone",
        "f": "iphone",
        "version_name": "10.0.601",
        "regionid": "",
        "mina_name": ""
    }
    queryParams = urllib.parse.urlencode(params)
    fetchUrl = "?".join([url, queryParams])
    response = request.openUrl(fetchUrl, user, {})
    content = response.read()

    soup = BeautifulSoup(content, "html.parser")
    for result in soup.find_all('div', {"class": "result-text"}):
        logger.info(prod["name"] + ': ' + result.get_text(strip=True))
示例#3
0
def getFreeBeautyTryList(user):
    url = 'https://m.dianping.com/beautytry/productlist?channel=1&category=0&period=0&cityid=7&longitude=%2A&latitude=%2A&dpid=%2A&type=0'
    response = request.openUrl(url, user, {})
    content = response.read()
    decodeContent = json.loads(content)

    prodList = []
    for prod in decodeContent["data"]["goodProductList"]:
        if (prod["hasRegister"] == False):
            prodList.append({"id": prod["id"], "name": prod["name"]})
    logger.info('-----获取以下未申请的免费试用,总数:{0}---\n{1}'.format(
        len(prodList), prodList))

    shopList = []
    for shop in decodeContent["data"]["experienceProductList"]:
        if (shop["hasRegister"] == False):
            shopList.append({
                "id": shop["id"],
                "name": shop["simpleName"],
                "price": shop["price"]
            })
    logger.info('-----获取以下未申请的0元探新店产品试用,总数:{0}---\n{1}'.format(
        len(shopList), shopList))

    return prodList, shopList
示例#4
0
def getShopDetail(prod, user):
    url = 'https://m.dianping.com/beautytry/productlist/detail'
    params = {
        "channel": 1,
        "category": 0,
        "userid": '',
        "longitude": '',
        "latitude": '',
        "dpid": '',
        "productid": prod["id"],
        "productbackendid": 0,
        "cityid": 7,
        "utm_source": 'rb'
    }
    fetchUrl = "?".join([url, urllib.parse.urlencode(params)])
    user["headers"].update({
        "Host": "m.dianping.com",
        "Referer": fetchUrl + '&businesskey=',
        "Upgrade-Insecure-Requests": "1",
        "DNT": "1"
    })
    response = request.openUrl(fetchUrl, user, {})
    jsondata = json.loads(response.read())
    shop = jsondata["data"]["selectShop"]
    prod.update({"shopId": shop["shopId"], "shopType": shop["shopType"]})
示例#5
0
def getFollowList(user):
    url = 'https://t.jd.com/follow/vender/qryCategories.do?qryKey=&_={0}'.format(
        time.time())
    follows = []
    setHeader(user)

    try:
        response = request.openUrl(url, user, {})
        content = str(response.read(), 'utf-8')
        decodeContent = json.loads(content)

        if decodeContent.__contains__("data"):
            # logger.info(decodeContent)
            for category in decodeContent.get("data", []):
                for entry in category["entityIdSet"]:
                    follows.append(entry)
        else:
            # logger.error(decodeContent)
            if (decodeContent.get("error", "") == "NotLogin"):
                user["token"] = ""
                config.saveUserConfig(user)
                logger.info("clear token and save to config file")

    except Exception as ex:
        logger.error("账户:{0}获取店铺关注列表报错, url:{1},错误信息:{2}".format(
            user["phone"], url, ex))

    logger.info("账户:{0}关注店铺总数:{1}, 具体如下:{2}".format(user["phone"],
                                                    len(follows), follows))

    return follows
示例#6
0
def signFreeBeautyTry(prod, user):
    url = 'https://m.dianping.com/beauty-salvia/try-center/tryresult.html'
    params = {
        "token": user["token"],
        "longitude": "*",
        "lng": "*",
        "latitude": "*",
        "lat": "*",
        "dpid": "*",
        "channel": "1",
        "category": "0",
        "catid": "50",
        "utm_source": "rb",
        "cityid": "7",
        "ci": "",
        "mina_name": "",
        "productid": prod["id"],
        "source": "",
        "shopid": prod.get("shopId", ''),
        "mobile": user["phone"]
    }
    queryParams = urllib.parse.urlencode(params)
    fetchUrl = "?".join([url, queryParams])
    user["headers"].update({
        "Host": "m.dianping.com",
        "Referer": fetchUrl,
        "Upgrade-Insecure-Requests": "1",
        "DNT": "1"
    })
    response = request.openUrl(fetchUrl, user, {})
    content = response.read()

    soup = BeautifulSoup(content, "html.parser")
    for result in soup.find_all('div', {"class": "result-text"}):
        logger.info(prod["name"] + ': ' + result.get_text(strip=True))
示例#7
0
def getShopDetail(prod, user):
    url = 'https://i.meituan.com/beautytry/productlist/detail'
    params = {
        "channel": 10,
        "category": 0,
        "userid": '',
        "longitude": '',
        "latitude": '',
        "dpid": '',
        "productid": prod["id"],
        "productbackendid": 0,
        "cityid": 30,
        "utm_source": 'rb'
    }
    fetchUrl = "?".join([url, urllib.parse.urlencode(params)])
    response = request.openUrl(fetchUrl, user, {})
    content = response.read()
    if b'<!DOCTYPE html>' in content:
        logger.debug('reponse content is html')
        # logger.debug(content)
        return

    jsondata = json.loads(content)
    shopId = getShopId(jsondata)
    shop = jsondata["data"]["selectShop"]
    prod.update({"shopId": shopId, "shopType": shop["shopType"]})

    logger.info(prod)
示例#8
0
def getVendorByProductId(user, prodId):
    url = 'http://try.jd.com/migrate/getActivityById?id={0}'.format(prodId)
    user["headers"].update({
        "Referer": url,
        "Host": "try.jd.com"
    })

    try:
        response = request.openUrl(url, user, {})
        content = str(response.read(), 'utf-8')
        # logger.info("vendor response content:{0}".format(content))
        decodeContent = json.loads(content)

        if "data" not in decodeContent:
            return 0

        shopInfo = decodeContent["data"]["shopInfo"]
        logger.info("账户:{0}获取店铺信息:{1}".format(user["phone"], shopInfo))
        
        shopId = shopInfo["shopId"]
        # logger.info("shop id:{0}".format(shopId))

        return shopId
    except Exception as ex:
        logger.error(ex)
        return 0
示例#9
0
def hottryapply(user):
    logger.info("热门试用产品开始申请")

    url = 'http://try.jd.com'
    user["headers"].update({
        "Host": "try.jd.com",
        "Referer": url
    })

    try:
        response = request.openUrl(url, user, {})
        logger.info("opening web")
        content = str(response.read(), 'utf-8')
        soup = BeautifulSoup(content, "html.parser")
        hottryprods = []

        for result in soup.find_all('li', {"class": "ui-switchable-panel"}):
            activityId = result.get("activity_id")
            if (not activityId is None):
                hottryprods.append(activityId)

        logger.info("user:{1}热门试用产品:{0}".format(hottryprods, user["phone"]))

        for prodId in hottryprods:
            vendorId = getVendorByProductId(user, prodId)
            followVendor(user, vendorId)
            applyTryProduct(user, prodId)

    except Exception as ex:
        logger.error("账户:{0}获取已申请试用产品时报错, 产品url:{1}, message:{2}".format(user["phone"],url, ex))

    logger.info("账户:{0}热门试用产品结束申请".format(user["phone"]))
示例#10
0
def getAlreadyApplyTryProduct(allTryProducts, user):
    prodIds = ','.join(allTryProducts)
    url = 'https://try.jd.com/user/getApplyStateByActivityIds?activityIds={0}'.format(
        prodIds)
    user["headers"].update({
        "Referer": url
    })
    result = []

    try:
        response = request.openUrl(url, user, {})
        content = str(response.read(), 'utf-8')
        decodeContent = json.loads(content)

        for item in decodeContent:
            result.append(item["activityId"])

        # logger.info(result)

    except Exception as ex:
        logger.error("获取已申请试用产品报错, url:{0}".format(url))
        logger.error(content)
        logger.error(ex)

    return result
示例#11
0
def checkin(config):
    setQueryHeader(config)
    logger.info(config)

    url = 'https://zhiyou.smzdm.com/user/checkin/jsonp_checkin'
    response = request.openUrl(url, config, {})
    content = response.read().decode('utf-8')

    logger.info("张大妈签到结果:{0}".format(content))
示例#12
0
def followVendor(user, venderId):
    url = 'http://try.jd.com/migrate/follow?_s={0}&venderId={1}'.format('pc', venderId)
    user["headers"].update({
        "Referer": url
    })

    response = request.openUrl(url, user, {})
    content = str(response.read(), 'utf-8')
    decodeContent = json.loads(content)
    logger.info("账户:{0}关注店铺结果:{1}".format(user["phone"], decodeContent))
示例#13
0
def checkin(user):
    config.getConfig(user)

    url = 'https://m.dianping.com/mobile/event/arro/checkin'
    setQueryHeader(user)
    response = request.openUrl(url, user, {})
    content = response.read()
    content = str(content, 'utf-8')

    logger.info("霸王餐签到结果:{0}".format(content))
    checkLoginStatus(user, content)
示例#14
0
def removeFollow(user, vendor):
    url = 'https://t.jd.com/follow/vender/unfollow.do?venderId={0}&_={1}'.format(
        vendor, time.time())
    setHeader(user)

    try:
        response = request.openUrl(url, user, {})
        content = str(response.read(), 'utf-8')
        # decodeContent = json.loads(content)
        logger.info(content)

    except Exception as ex:
        logger.error("user:{1}取消店铺关注列表报错, url:{0}".format(url, user["phone"]))
        logger.error(ex)
示例#15
0
def applyTryProduct(user, prodId):
    url = 'https://try.jd.com/migrate/apply?activityId={0}&source=0'.format(prodId)
    user["headers"].update({
        "Referer": url
    })

    response = request.openUrl(url, user, {})
    content = str(response.read(), 'utf-8')
    decodeContent = json.loads(content)
    logger.info("账户:{0}申请试用产品:{1}, 结果:{2}".format(user["phone"],prodId, decodeContent))

    status = decodeContent["code"]
    if (status == '-131'):
        errMsg = '账户:{0}申请试用已达到当天限制次数'.format(user["phone"])
        raise Exception(errMsg)
    if (status == '-600'):
        user["token"] = ""
        config.saveUserConfig(user)
        logger.info("清除token并保存到用户配置文件中")
        raise Exception("账户:{0}请先登录".format(user["phone"]))
示例#16
0
def applyTryProduct(user, prodId):
    url = 'https://try.jd.com/migrate/apply?activityId={0}&source=0'.format(
        prodId)
    user["headers"].update({
        "Referer": url
    })

    response = request.openUrl(url, user, {})
    content = str(response.read(), 'utf-8')
    decodeContent = json.loads(content)
    logger.info("user:{2}apply product id:{0}, result:{1}".format(prodId, decodeContent, user["phone"]))

    status = decodeContent["code"]
    if (status == '-131'):
        raise Exception('user:{0}apply times is limited'.format(user["phone"]))
    if (status == '-600'):
        user["token"] = ""
        config.saveUserConfig(user)
        logger.info("clear token and save to user config file")
        raise Exception("user:{0}please login first".format(user["phone"]))
示例#17
0
def getFreeTryList(user):
    url = 'https://m.dianping.com/beautytry/fun/productlist?channel=16&category=0&cityid=7&longitude=0&latitude=&env=0'
    response = request.openUrl(url, user, {})
    content = json.loads(response.read())
    data = content["data"]

    prodList = []
    for item in data:
        propItems = data[item]
        if (isinstance(propItems, list)):
            for prod in propItems:
                if (prod["hasRegister"] == False):
                    prodList.append({
                        "id": prod["id"],
                        "name": prod["name"],
                        "channel": prod["channelId"],
                        "price": prod["price"]
                    })
    logger.info('-----获取以下未申请的免费试用,总数:{0}---\n{1}'.format(
        len(prodList), prodList))

    return prodList
示例#18
0
def signFreeTry(prod, user):
    # https://m.dianping.com/play-next/node/freetry/result?productid=66818&jumpFromWx=&cityid=7&latitude=22.54881&longitude=113.94119&channel=16&product=dpapp&pushEnabled=0
    url = 'https://m.dianping.com/play-next/node/freetry/result'
    params = {
        "token": user["token"],
        "longitude": "*",
        "lng": "*",
        "latitude": "*",
        "lat": "*",
        "dpid": "*",
        "channel": prod["channel"],
        "category": "0",
        "catid": "50",
        "utm_source": "rb",
        "cityid": "7",
        "ci": "",
        "mina_name": "",
        "productid": prod["id"],
        "source": "",
        "shopid": prod.get("shopId", ''),
        "mobile": user["phone"]
    }
    queryParams = urllib.parse.urlencode(params)
    fetchUrl = "?".join([url, queryParams])
    user["headers"].update({
        "Host": "m.dianping.com",
        "Referer": fetchUrl,
        "Upgrade-Insecure-Requests": "1",
        "DNT": "1"
    })
    response = request.openUrl(fetchUrl, user, {})
    content = response.read()

    soup = BeautifulSoup(content, "html.parser")
    for result in soup.find_all('div', {"class": "supply-result"}):
        logger.info(prod["name"] + ': ' + result.get_text(strip=True))