pythonJRAのHPからレース結果urlを得て各レースの1着騎手名と人気と配当を得る


        from bs4 import BeautifulSoup
        import requests
        import re
        #################################################################################   
        # urlを渡して指定文字を含むurlを得る関数  
        def url2urls(url,search_word):
            soup = url2soup(url)
            match = [a for a in soup.find_all('a') if search_word in str(a)]
            urls = [re.findall(r'/JRADB.+/[0-9a-fA-F]{2}', str(a))[0]for a in match]
            '重複削除順番維持'
            urls = sorted(set(urls), key=urls.index)
            if 'CNAME' in urls[0]:
                urls = ['https://www.jra.go.jp' + u for u in urls]
                return urls
            else:
                urls = [u.replace("'",'').split(',') for u in urls]
                #'/JRADB/accessK.html', 'pw04kmk001019/85',の後にスペースがあることがあるのでstrip
                urls = [('https://www.jra.go.jp' + u[0] ,'cname=' + u[1].strip()) 
                        for u in urls]
                return urls
        #################################################################################
        # urlを渡しsoupを得る 
        def url2soup(url):
            if len(url) == 2:
                return BeautifulSoup(requests.post(url[0], url[1]).content, 'html.parser') 
            if len(url) != 2:
                return BeautifulSoup(requests.get(url).content, 'html.parser')
        #################################################################################
        # urlを渡し馬場と日付を得る 
        def srl2bb8yymmdd(srl):
            dic = {
            '01': '札幌', '02': '函館', '03': '福島', '04': '新潟', '05': '東京', 
            '06': '中山', '07': '中京', '08': '京都', '09': '阪神', '10': '小倉'
            }
            return dic[srl[1][15:17]] , srl[1][-11:-3]
        ################################################################################
        # JRAのHPからレース結果urlを得て各レースの1着騎手名と人気と配当を得る         
        u = 'https://www.jra.go.jp/'
        u = url2urls(u,'レース結果')
        u = url2urls(u[0],'srl')#uはリストなので要素が一つでも[0]と指定必要
        u = u[1]#srlはこの時は49得たので[0]から[48]指定できる
        print(srl2bb8yymmdd(u))
        u = url2urls(u,'sde')
        for s in u:
            #[6::7]6列目からステップ7とすることで6列(騎手名)と13列(単勝人気)を得る
            name8pop = [td.text for td in url2soup(s).find_all('tr')[1].find_all('td')[6::7]]
            win = url2soup(s).find('li', class_="win").find('div' , class_="yen").text
            print(name8pop,win)