示例#1
0
async def getBukkensFromWEBSITE(future, ymlFileName, URL_GOODROOM_PRE,
                                URL_GOODROOM_RSTORE, pageNum):
    #新規取得した物件情報を格納
    bukkens = []
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    # yamlファイル格納フォルダパス
    ROOT_PATH = os.path.dirname(
        os.path.abspath(__file__))  #このスクリプトがあるフォルダの絶対パス
    YAML_FOLDER_PATH = ROOT_PATH + "/../yml/"
    #yamlデータ取得
    print("--yaml read start--")
    f = open(YAML_FOLDER_PATH + ymlFileName, 'r')
    yaml = yamllib.load(f)  # 読み込む
    f.close()
    print("--yaml read end--")
    #物件情報削除
    dbio.deleteBySite(yaml["website"])
    #  物件サイトから情報を取得
    for i in range(1, pageNum):
        url = URL_GOODROOM_PRE + str(i) + URL_GOODROOM_RSTORE
        print("---getting start " + url + "---")
        await getBukkensFromYamlInPage(yaml, url)
    #処理完了通知
    future.set_result(True)
    print("---getting done " + url + "---")
示例#2
0
async def getBukkensFromWEBSITE(future,ymlFileName,URL_GOODROOM_PRE,URL_GOODROOM_RSTORE,pageNum):
    #新規取得した物件情報を格納
    bukkens=[]
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    # yamlファイル格納フォルダパス
    ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) #このスクリプトがあるフォルダの絶対パス
    YAML_FOLDER_PATH=ROOT_PATH+"/../yml/"
    #yamlデータ取得
    print("--yaml read start--")
    f = open(YAML_FOLDER_PATH+ymlFileName, 'r')
    yaml = yamllib.load(f)  # 読み込む
    f.close()
    print("--yaml read end--")
    #物件情報削除
    dbio.deleteBySite(yaml["website"])
    #  物件サイトから情報を取得
    for i in range(1,pageNum):
        url = URL_GOODROOM_PRE + str(i) + URL_GOODROOM_RSTORE
        print("---getting start "+ url +"---")
        await getBukkensFromYamlInPage(yaml,url)
    #処理完了通知
    future.set_result(True)
    print("---getting done "+ url +"---")
示例#3
0
def viewSelect(select):
    bukkens=[]
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    bukkens=dbio.selectWith(select)
    return bukkens
示例#4
0
def viewAll():
    bukkens=[]
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    bukkens=dbio.select()
    return bukkens
示例#5
0
def viewAll():
    bukkens = []
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    bukkens = dbio.select()
    return bukkens
示例#6
0
def viewSelect(select):
    bukkens = []
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    bukkens = dbio.selectWith(select)
    return bukkens
示例#7
0
async def getBukkensFromYamlInPage(yaml,pageUrl):
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()    
    # webサイトから取得した物件リストを格納
    bukkens = []
    #開発環境と本番環境でPhantomJSの呼び出し方が異なるため、ホスト名で振り分け
    if os.uname()[1] == "kira-no-MacBook-Air.local":
        driver = webdriver.PhantomJS(executable_path='/Applications/phantomjs-1.9.2-macosx/bin/phantomjs')
    else:    
        driver = webdriver.PhantomJS()

    # 新規タブをあけるキー操作を設定
    newtab=Keys.CONTROL + 't'
    # Mac かどうかの判定、キーがMac だと違う
    if sys.platform == 'darwin':
        newtab=Keys.COMMAND + 't'
     
    #webサイトからデータ取得
    print("start driver")
    #open tab
    #driver.find_element_by_tag_name('body').send_keys(newtab) 
    driver.get(pageUrl)
    print("end driver")
    #HTMLは未使用にみえるが、文字列指定の形でevalで使用している
    HTML = lxml.html.fromstring(driver.page_source)
    
    #登録用物件辞書
    bukkenDic={}
    bukkenSetter=BukkenSetter()
    
    #mainルーチン
    # g is GROUP
    # u is UNIT
    # pcs is UNIT item
    #共通情報設定
    yamlid="website"
    bukkenDic.update({yamlid:yaml[yamlid]})
    yamlid="websiteURL"
    bukkenDic.update({yamlid:yaml[yamlid]})
    #print("G1 --YAML[GROUPS] => YAML[GROUP]--:YAMLファイルからGROUPの検索条件を取得")
    for g in yaml:
        if g == "GROUP":
            gp = yaml[g]["PROTOCOL"]
            gc = yaml[g]["COMMAND"]
            gs = yaml[g]["SELECTOR"]
            #print("G2 --YAML[GROUP] => HTML[GROUPS]--:GROUP検索条件よりHTMLのGROUP群を抽出")        
            groups=eval("HTML"+"."+gp+'("'+gc+'")'+gs)
            #print("G3 --HTML[GROUPS] => HTML[GROUP]--:HTMLのGROUP群を1つづつループ処理")
            for group in groups:
                #print("U1 --YAML[GROUP] => YAML[UNIT]--:YAMLファイルからUNITの検索条件を取得")
                for u in yaml[g]:
                    if u == "UNIT":
                        up = yaml[g][u]["PROTOCOL"]
                        uc = yaml[g][u]["COMMAND"]
                        us = yaml[g][u]["SELECTOR"]
                        #print("U2 --YAML[UNIT] => HTML[UNITS]--:UNIT検索条件よりHTMLのUNIT群を抽出")
                        #<div class="article-box clearfix">
                        units=eval("group"+"."+up+'("'+uc+'")'+us)
                        #print("U3 --HTML[UNITS] => HTML[UNIT]--:HTMLのUNIT群を1つづつループ処理")
                        for unit in units:
                            #print("UI1--YAML[UNIT] => YAML[UNITITEMS]--:YAMLファイルからUNITITEM群の検索条件を取得")
                            for uis in yaml[g][u]:
                                if uis =="UNITITEMS":
                                    #print("UI2--YAML[UNITITEMS] => YAML[UNITITEM]--:YAMLファイルからUNITITEMの検索条件を取得")
                                    for ui in yaml[g][u][uis] :
                                        if ui != "IGNORE":
                                            p = yaml[g][u][uis][ui]["PROTOCOL"]
                                            c = yaml[g][u][uis][ui]["COMMAND"]
                                            s = yaml[g][u][uis][ui]["SELECTOR"]
                                            h = yaml[g][u][uis][ui]["HEADER"]
                                            #print("UI3 --YAML[UNITITEM] => HTML[UNITITEM]--:UNITITEM検索条件よりHTMLのUNITITEM情報を抽出")
                                            #print(ui+":"+htmlItemSelector(unit,p,c,s))
                                            #登録用物件辞書に追加
                                            bukkenDic.update({ui:htmlItemSelector(unit,p,c,s,h)})
                                    #物件情報設定
                                    bukkeninfo = bukkenSetter.getBukkenInfoByDic(bukkenDic)
                                    bukkens.append(bukkeninfo)
    #️DBへ格納
    dbio.insert(bukkens)
示例#8
0
async def getBukkensFromYamlInPage(yaml, pageUrl):
    # 物件情報のDBIOインスタンスを作成
    dbio = dbiomaker()
    # webサイトから取得した物件リストを格納
    bukkens = []
    #開発環境と本番環境でPhantomJSの呼び出し方が異なるため、ホスト名で振り分け
    if os.uname()[1] == "kira-no-MacBook-Air.local":
        driver = webdriver.PhantomJS(
            executable_path='/Applications/phantomjs-1.9.2-macosx/bin/phantomjs'
        )
    else:
        driver = webdriver.PhantomJS()

    # 新規タブをあけるキー操作を設定
    newtab = Keys.CONTROL + 't'
    # Mac かどうかの判定、キーがMac だと違う
    if sys.platform == 'darwin':
        newtab = Keys.COMMAND + 't'

    #webサイトからデータ取得
    print("start driver")
    #open tab
    #driver.find_element_by_tag_name('body').send_keys(newtab)
    driver.get(pageUrl)
    print("end driver")
    #HTMLは未使用にみえるが、文字列指定の形でevalで使用している
    HTML = lxml.html.fromstring(driver.page_source)

    #登録用物件辞書
    bukkenDic = {}
    bukkenSetter = BukkenSetter()

    #mainルーチン
    # g is GROUP
    # u is UNIT
    # pcs is UNIT item
    #共通情報設定
    yamlid = "website"
    bukkenDic.update({yamlid: yaml[yamlid]})
    yamlid = "websiteURL"
    bukkenDic.update({yamlid: yaml[yamlid]})
    #print("G1 --YAML[GROUPS] => YAML[GROUP]--:YAMLファイルからGROUPの検索条件を取得")
    for g in yaml:
        if g == "GROUP":
            gp = yaml[g]["PROTOCOL"]
            gc = yaml[g]["COMMAND"]
            gs = yaml[g]["SELECTOR"]
            #print("G2 --YAML[GROUP] => HTML[GROUPS]--:GROUP検索条件よりHTMLのGROUP群を抽出")
            groups = eval("HTML" + "." + gp + '("' + gc + '")' + gs)
            #print("G3 --HTML[GROUPS] => HTML[GROUP]--:HTMLのGROUP群を1つづつループ処理")
            for group in groups:
                #print("U1 --YAML[GROUP] => YAML[UNIT]--:YAMLファイルからUNITの検索条件を取得")
                for u in yaml[g]:
                    if u == "UNIT":
                        up = yaml[g][u]["PROTOCOL"]
                        uc = yaml[g][u]["COMMAND"]
                        us = yaml[g][u]["SELECTOR"]
                        #print("U2 --YAML[UNIT] => HTML[UNITS]--:UNIT検索条件よりHTMLのUNIT群を抽出")
                        #<div class="article-box clearfix">
                        units = eval("group" + "." + up + '("' + uc + '")' +
                                     us)
                        #print("U3 --HTML[UNITS] => HTML[UNIT]--:HTMLのUNIT群を1つづつループ処理")
                        for unit in units:
                            #print("UI1--YAML[UNIT] => YAML[UNITITEMS]--:YAMLファイルからUNITITEM群の検索条件を取得")
                            for uis in yaml[g][u]:
                                if uis == "UNITITEMS":
                                    #print("UI2--YAML[UNITITEMS] => YAML[UNITITEM]--:YAMLファイルからUNITITEMの検索条件を取得")
                                    for ui in yaml[g][u][uis]:
                                        if ui != "IGNORE":
                                            p = yaml[g][u][uis][ui]["PROTOCOL"]
                                            c = yaml[g][u][uis][ui]["COMMAND"]
                                            s = yaml[g][u][uis][ui]["SELECTOR"]
                                            h = yaml[g][u][uis][ui]["HEADER"]
                                            #print("UI3 --YAML[UNITITEM] => HTML[UNITITEM]--:UNITITEM検索条件よりHTMLのUNITITEM情報を抽出")
                                            #print(ui+":"+htmlItemSelector(unit,p,c,s))
                                            #登録用物件辞書に追加
                                            bukkenDic.update({
                                                ui:
                                                htmlItemSelector(
                                                    unit, p, c, s, h)
                                            })
                                    #物件情報設定
                                    bukkeninfo = bukkenSetter.getBukkenInfoByDic(
                                        bukkenDic)
                                    bukkens.append(bukkeninfo)
    #️DBへ格納
    dbio.insert(bukkens)