簡體   English   中英

如何打破 Python 中的循環?

[英]How to break the loop in Python?

我正在做一個項目,當already_exists為 True 時,我需要退出循環。 我不能在這里這樣做。 或者也許我放錯了循環。

loop = True

while loop is True:
    #loop for page numbers
    for page in range(1, 10):

        #prints page number on terminal
        print("Getting page {}..".format(page))

        #getting data from the website
        params["paged"] = page
        data = requests.post(url, data=params).json()
        soup = BeautifulSoup(data["markup"], "html.parser")

        #loop to get the data from each entry (livewire-entry)
        for entry in soup.select(".livewire-entry"):

            datime = entry.select_one(".adate") #date&time ----- (1)
            status = entry.select_one(".status") #status ----- No conditions
            name = status.find_next("strong") #school ----- No conditions
            details = entry.select_one(".lw-details") #details ----- (2)


            datime = datime.get_text(strip=True)
            datime = datetime.datetime.strptime(datime, '%B %d, %Y %I:%M%p')
            time = str(datime.time()) #returns time
            date = str(datime.date()) #returns date


            already_exists = False
            for firstentry in csvFileArray:
                already_exists = (firstentry['Date'] == date
                             and firstentry['Time'] == time
                             and firstentry['Status'] == (status.get_text(strip=True))
                             and firstentry['School'] == name.get_text(strip=True)
                             and firstentry['Details'] == details.get_text(strip=True))

                if already_exists:
                    print('drop')
                    loop = False
                    break

            if not already_exists:
                print('updating...')
                writer.writerow(
                    [date, time, status.get_text(strip=True), name.get_text(strip=True), details.get_text(strip=True)]) 

請參閱以下更改,

loop = True

while loop is True:
    #loop for page numbers
    for page in range(1, 10):

        #prints page number on terminal
        print("Getting page {}..".format(page))

        #getting data from the website
        params["paged"] = page
        data = requests.post(url, data=params).json()
        soup = BeautifulSoup(data["markup"], "html.parser")

        #loop to get the data from each entry (livewire-entry)
        for entry in soup.select(".livewire-entry"):

            datime = entry.select_one(".adate") #date&time ----- (1)
            status = entry.select_one(".status") #status ----- No conditions
            name = status.find_next("strong") #school ----- No conditions
            details = entry.select_one(".lw-details") #details ----- (2)


            datime = datime.get_text(strip=True)
            datime = datetime.datetime.strptime(datime, '%B %d, %Y %I:%M%p')
            time = str(datime.time()) #returns time
            date = str(datime.date()) #returns date


            already_exists = False
            for firstentry in csvFileArray:
                already_exists = (firstentry['Date'] == date
                             and firstentry['Time'] == time
                             and firstentry['Status'] == (status.get_text(strip=True))
                             and firstentry['School'] == name.get_text(strip=True)
                             and firstentry['Details'] == details.get_text(strip=True))
            # Changes here Indentation
            if already_exists:
                print('drop')
                loop = False
                break

            if not already_exists:
                print('updating...')
                writer.writerow(
                    [date, time, status.get_text(strip=True), name.get_text(strip=True), details.get_text(strip=True)]) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM