社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python循环在使用counter之后没有按预期中断

Michael • 5 年前 • 1483 次点击  

我在下面代码的末尾添加了一个计数器。但是,当代码继续运行超过10的计数器时,我将其设置为break。不知道我做错了什么。

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
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52033
 
1483 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Alex Yu
Reply   •   1 楼
Alex Yu    6 年前

写在 4.4. break and continue Statements, and else Clauses on Loops :

这个 break 语句,就像在C中一样,从 最里面的包围 for while 循环。

在你的代码中是:

for i in range(num_page_items):
     .....
needtobe
Reply   •   2 楼
needtobe    6 年前

到达后的代码 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