python - How to break the loop in Python?
问题描述
I am working on a project, where I need to exit the loop when already_exists
is True. I am not able to do so here. Or maybe I have put the loop wrongly.
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)])
解决方案
See the below changes,
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)])
推荐阅读
- ruby - Chartick Ruby如何将比例选项传递给line_chart
- javascript - 关于来自 FreeCodeCamp 的记录收集挑战的问题
- okhttp - 在达到 keepAliveDurationNs 之前关闭连接
- nlp - 使用带有 SpaCy 的 TPus
- java - E/zzf:检索安全网令牌时出现问题:7:
- android-studio - 更新 Big Sur 11.3 后,Android 模拟器无法正常工作或显示
- android - Android 房间,映射到现有模型
- javascript - Javascript:更改第三个输入值时的金额计算
- java - Jacoco 覆盖率专家
- php - Swagger PHP & OA3 - 如何隐藏一些 endoint/控制器 (zircote/swagger-php)