Python 使用计数器后循环没有中断
Python loop not breaking as it should after using counter
我在下面的代码末尾添加了一个计数器。但是,当代码继续 运行 超过计数器 10 时,我将其设置为中断。不知道我做错了什么。
chromedriver='C:\Users\user\Downloads\chromedriver_win32\chromedriver.exe'
options=webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1200x600')
browser=webdriver.Chrome(executable_path=chromedriver,chrome_options=options)
path='C:/Users/something.xlsx'
xls=pd.read_excel(path)
data=xls["companyname"].tolist()
data=[w.replace('" "','+') for w in data]
book=openpyxl.load_workbook(path)
sheet=book.active
try:
delete=book['Python Data']
book.remove(delete)
except Exception:
pass
book.create_sheet('Python Data')
ws1=book['Python Data']
book.save(path)
counter=0
while data:
for item in data:
browser.get('https://duckduckgo.com/?q='+item+'&t=h_')
results = browser.find_elements_by_id('links')
num_page_items = len(results)
for i in range(num_page_items):
mylist = results[i].text
row=len(ws1['A']) + 1
ws1.cell(row=1,column=1,value="Results")
ws1.cell(row=row,column=1,value=mylist)
book.save(path)
counter += 1
print(counter)
if counter==10:
break
您的代码在到达 counter == 10
后再次执行,因为无限 while data
语句。请注意,break
不会在此处转义 while
语句,它会转义 for i in range(num_page_items)
.
请使用以下代码:
# notice lack of while data statement
for item in data:
browser.get('https://duckduckgo.com/?q='+item+'&t=h_')
results = browser.find_elements_by_id('links')
num_page_items = len(results)
for i in range(num_page_items):
mylist = results[i].text
row=len(ws1['A']) + 1
ws1.cell(row=1,column=1,value="Results")
ws1.cell(row=row,column=1,value=mylist)
book.save(path)
counter += 1
print(counter)
if counter==10:
break
如4.4. break and continue Statements, and else Clauses on Loops中所写:
The break
statement, like in C, breaks out of the innermost enclosing for
or while
loop.
在您的代码中是:
for i in range(num_page_items):
.....
我在下面的代码末尾添加了一个计数器。但是,当代码继续 运行 超过计数器 10 时,我将其设置为中断。不知道我做错了什么。
chromedriver='C:\Users\user\Downloads\chromedriver_win32\chromedriver.exe'
options=webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1200x600')
browser=webdriver.Chrome(executable_path=chromedriver,chrome_options=options)
path='C:/Users/something.xlsx'
xls=pd.read_excel(path)
data=xls["companyname"].tolist()
data=[w.replace('" "','+') for w in data]
book=openpyxl.load_workbook(path)
sheet=book.active
try:
delete=book['Python Data']
book.remove(delete)
except Exception:
pass
book.create_sheet('Python Data')
ws1=book['Python Data']
book.save(path)
counter=0
while data:
for item in data:
browser.get('https://duckduckgo.com/?q='+item+'&t=h_')
results = browser.find_elements_by_id('links')
num_page_items = len(results)
for i in range(num_page_items):
mylist = results[i].text
row=len(ws1['A']) + 1
ws1.cell(row=1,column=1,value="Results")
ws1.cell(row=row,column=1,value=mylist)
book.save(path)
counter += 1
print(counter)
if counter==10:
break
您的代码在到达 counter == 10
后再次执行,因为无限 while data
语句。请注意,break
不会在此处转义 while
语句,它会转义 for i in range(num_page_items)
.
请使用以下代码:
# notice lack of while data statement
for item in data:
browser.get('https://duckduckgo.com/?q='+item+'&t=h_')
results = browser.find_elements_by_id('links')
num_page_items = len(results)
for i in range(num_page_items):
mylist = results[i].text
row=len(ws1['A']) + 1
ws1.cell(row=1,column=1,value="Results")
ws1.cell(row=row,column=1,value=mylist)
book.save(path)
counter += 1
print(counter)
if counter==10:
break
如4.4. break and continue Statements, and else Clauses on Loops中所写:
The
break
statement, like in C, breaks out of the innermost enclosingfor
orwhile
loop.
在您的代码中是:
for i in range(num_page_items):
.....