Программа запускается дважды - Правильное использование основного - PullRequest
0 голосов
/ 22 ноября 2018

Попытка выяснить, почему моя функция отрядов работает дважды.Большинство функций внизу принимают данные из предыдущей функции в качестве входных данных, а последняя функция находит максимум в списке списков.Я хочу правильно настроить мой основной режим, чтобы 1) в этой программе все работало правильно и 2) чтобы при вызове из другой программы он просто запускал отряды самостоятельно и возвращал значение из отрядов этой программе

Похоже, отряды бегут вдвое быстрее, чем моя внешняя, в то время как петля печатает "все сделано" - дваждыСказав это, как я должен настроить мой основной?

Как это работает -

Первая функция squads возвращает список списков
Вторая функция - goal_convert_dash - получает вывод из первой функции (squads) - берет два элемента (из каждого списка) в списках списков и, если есть тире (-), преобразует это в ноль.
.Third func - goal_convert_toint получает выходные данные из goal_convert_dash и преобразует второй столбец вноль.
Четвертый - get_max затем получает максимум из 2-го столбца и выводит его вместе с данными из первого столбца ноль

Если он работает правильно, я думаю, что вывод должен быть -

Итог завершен. Лучший бомбардир Премьер-лиги: ['John Smith', 11]

Мой текущий результат на данный момент -

iter one done
Premier league top goal scorer is: 
['John Smith', 11]
iter one done

Программа -

import requests
from bs4 import BeautifulSoup
import datetime
from operator import itemgetter
from scrape1_squad_urls import table

base_url = 'https://someurl.com'


# Squad Data

team_table = table()

#team_names = team_urls()
def squads():


    strip_team_name = [i.replace('https://www.someurl.com', '') for i in team_table]
    full_strip = [i.replace('-squad', '') for i in strip_team_name]

    iter = 0
    while iter < 1:
        tdstrip = []
        x = []
        tdstripclean = []
        for i in team_table:


                squad_r = requests.get(i)

        #        print(squad_r.status_code)

                now = datetime.datetime.now()
                soup = BeautifulSoup(squad_r.text, 'html.parser')

        #       div = soup.find('div', {'class': '-bp30-box col span1/1'})
                premier_squad_table = premier_squad_soup.find_all('table', {'class': 'table -small no-wrap football-squad-table '})
                headings = []
                playerurls = []
                full_links = []


                strip_team_name = [i.replace('https://someurl.com/', '') for i in team_table]
                full_strip = [i.replace('-squad', '') for i in strip_team_name]
                find_team_name = soup.find('span',{'class': 'swap-text__target'})
                for table in premier_squad_table:

                    table_head = table.find('thead')
                    head_rows = table_head.find_all('tr')

                    for item in head_rows:
                        headers = item.find_all('th')

                    table_body = table.find('tbody')
                    rows = table_body.find_all('tr')
                    for row in rows:
                        td = row.find_all('td')
                        x = [x.text.strip() for x in td]
                        position_teamname = (headers[0].text,find_team_name.text)
                        x[2]
                        x.extend(position_teamname)
                        tdstrip.append(x)
        iter = iter + 1
        print("iter one done")
    return(tdstrip)

#   return(newList)
#squads()

def goals_convert_dash():

    tdstrip = squads()  

    indexes = [0,2]
    newList = [[each_list[i] for i in indexes ] for each_list in tdstrip ]
    for eachlist in newList:
        if eachlist[1] == '-':
            eachlist[1] = 0
    return(newList) 
#goals_convert_dash()



#print(newList)

def goals_convert_toint():
    converted = goals_convert_dash()

    for eachlist in converted:
        eachlist[1] = int(eachlist[1])
    return(converted)        

#goals_convert_toint()


def get_max(lst, i, key_func=None):

    if not key_func: key_func = lambda x: x[i]
    res = max(lst, key=key_func)
    return [res[0], res[i]]

data = goals_convert_toint()

print("Premier league top goal scorer is: ")

print(get_max(data,1, lambda x: int(x[1])))

if __name__ == '__main__':
     squads()
#    goals_convert_dash()
#    goals_convert_toint()
#    get_max()
...