Example #1
0
def check_fund_status(taskobj):
    config = global_obj.get_obj("config")
    fund_list = config.get("fund_list", [])
    if len(fund_list) == 0:
        log.Waring("fund_list is empty")
        return
    ls = []
    for code in fund_list:
        old = fund_api.load_fund(code)
        code = str(code)
        fund_api.spiker_fund_and_save(code)
        ret = fund_api.load_fund(code)
        log.Info("spiker fund done", code)
        if old and ret:
            result = compare_fund(old,ret)
            if result:
                ls.append(result)
        else:
            log.Waring("load fund false", taskobj, type(old), type(ret))

    log.Info("spiker fund all", len(ls))
    if len(ls) > 0:
        htmobj = html.CHtml("你的韭菜日报:")
        for v in ls:
            line = "基金:%s(%s) 变化"%(v["name"],v["code"])
            htmobj.AddLine(line)
            htmobj.AddTable(v["data"], v["head"])
        html_text = htmobj.GetHtml()
        mailobj = global_obj.get_obj("mail")
        message  = mailobj.HtmlMailMessage()
        if message.SendMessage("韭菜研报", html_text):
            log.Info("send jiucai mail done")
    else:
        log.Info("基金信息没有变化")
Example #2
0
        def get_info2(key):
            parttern = './div[@data-component="baseinfo"]//div[@class="introContent"]//div[@class="%s"]//ul//li' % (
                key)
            ls = htree.xpath(parttern)
            if len(ls) == 0:
                log.Waring("get_house_info -> get_info -> get_info2 false",
                           key)
                return
            d = {}
            for li in ls:
                ls1 = li.xpath('./span/text()')

                if len(ls1) > 1 and trim_str(ls1[0]) == "抵押信息":  #特殊处理该处信息
                    ls2 = ls1[1:]
                else:
                    if key == "transaction":  #交易属性
                        ls2 = li.xpath('.//a/text()')
                    else:
                        ls2 = li.xpath('./text()')
                if len(ls1) == 0 or len(ls2) == 0:
                    log.Waring("get_house_info -> get_info base false", ls1,
                               ls2)
                    continue
                k = trim_str(ls1[0])
                v = trim_str(ls2[0])
                if k == "建筑面积" or k == "套内面积":
                    v = tools.tofloat(v.replace("㎡", ""), 5)

                data[k] = v
Example #3
0
 def get_total(data, htree):
     ls = htree.xpath(
         './/div[@class="overview"]//span[@class="total"]/text()')
     if len(ls) == 0 or not tools.is_float(ls[0]):
         log.Waring("get_house_info -> get_total false")
         return
     data["价格"] = tools.tofloat(ls[0])
Example #4
0
def get_community_info(cityName, keyword, filter_word=None):
    '''
    cityName: 城市
    keyword: 小区名
    filter_word 过滤关键字, 对region进行匹配
    @return
        返回小区列表
    '''
    global g_session

    data = {
        "cityName": cityName,
        "channel": "xiaoqu",
        "keyword": keyword,
        "query": keyword,
    }

    url = url_encode("https://ajax.api.ke.com/sug/headerSearch", data)
    result, _ = get_url(url, session=g_session)
    result_list = {}
    if is_not_ok(result):
        log.Error("get_community_info url false", cityName, keyword,
                  result.status_code)
        return
    result_data = js2py_val(result.content)
    if result_data["errno"] != 0:
        log.Error("get_community_info not ok", cityName, keyword, keyword)
        return result_list

    if len(result_data["data"]) == 0:
        log.Waring("get_community_info data is nil", cityName, result)
        return result_list
    for data in result_data["data"]["result"]:
        if filter_word and not filter_word in data["region"]:
            log.Info("get_community_info ingore by filter_word", cityName,
                     keyword, data)
            continue
        new_data = {
            "city": cityName,
            "name": data["text"],
            "id": data["id"],
            "region": data["region"],
            "house_url_list": [],
            "house_data": {},
        }
        new_data["house_url_list"] = get_house_list(data["id"])
        result_list[new_data["id"]] = new_data

    return result_list
Example #5
0
def get_house_list(cid):
    url = "https://gz.ke.com/ershoufang/c%s/" % (cid)
    global g_session
    result, _ = get_url(url, session=g_session)
    if result.status_code != 200:
        log.Waring("get_house_list url false", cid)
        return False

    #获取房子列表
    tree = etree.HTML(result.text)
    url_ls = tree.xpath(
        '//div[@class="leftContent"]//ul[@class="sellListContent"]//li[@class="clear"]/a/@href'
    )

    return url_ls
Example #6
0
def get_house_info(url, house_data):
    def get_total(data, htree):
        ls = htree.xpath(
            './/div[@class="overview"]//span[@class="total"]/text()')
        if len(ls) == 0 or not tools.is_float(ls[0]):
            log.Waring("get_house_info -> get_total false")
            return
        data["价格"] = tools.tofloat(ls[0])

    def get_info(data, htree):
        #基本属性

        def get_info2(key):
            parttern = './div[@data-component="baseinfo"]//div[@class="introContent"]//div[@class="%s"]//ul//li' % (
                key)
            ls = htree.xpath(parttern)
            if len(ls) == 0:
                log.Waring("get_house_info -> get_info -> get_info2 false",
                           key)
                return
            d = {}
            for li in ls:
                ls1 = li.xpath('./span/text()')

                if len(ls1) > 1 and trim_str(ls1[0]) == "抵押信息":  #特殊处理该处信息
                    ls2 = ls1[1:]
                else:
                    if key == "transaction":  #交易属性
                        ls2 = li.xpath('.//a/text()')
                    else:
                        ls2 = li.xpath('./text()')
                if len(ls1) == 0 or len(ls2) == 0:
                    log.Waring("get_house_info -> get_info base false", ls1,
                               ls2)
                    continue
                k = trim_str(ls1[0])
                v = trim_str(ls2[0])
                if k == "建筑面积" or k == "套内面积":
                    v = tools.tofloat(v.replace("㎡", ""), 5)

                data[k] = v
            #data[key] = d

        get_info2("base")
        get_info2("transaction")
        if "价格" in data and "建筑面积" in data:
            data["均价"] = tools.tofloat(
                float(data["价格"]) / float(data["建筑面积"]), 5)

    r = re.match(__pHouseID, url)
    if not r:
        log.Error("get_house_info no hid", url)
        return None
    house_info = {
        "id": r.groups()[0],
    }
    result, _ = get_url(url, session=g_session)
    if result.status_code != 200:
        log.Waring("request house url false", url)
        return None
    htree = etree.HTML(result.text)

    ls = htree.xpath(
        '//div[@class="sellDetailPage"]//div[@data-component="overviewIntro"]')
    if len(ls) > 0:
        get_total(house_info, ls[0])
    ls = htree.xpath(
        '//div[@class="sellDetailPage"]//div[@class="m-content"]//div[@class="box-l"]'
    )
    if len(ls) > 0:
        get_info(house_info, ls[0])
    house_data[house_info["id"]] = house_info