首页 > 解决方案 > Python编程在休息后不会继续吗?

问题描述

在我的程序中,如果在 eg.10 的页面上没有找到数据,那么对于其余的页面,11 到 50,它不会进入 else 语句(这应该发生)。我是 python 新手,需要帮助在下面编写的代码中对这个问题进行排序:

import concurrent
import functools
import concurrent.futures
import requests
from urllib3.exceptions import InsecureRequestWarning
import csv

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
from bs4 import BeautifulSoup as bs

def download_page(session, page_no):
    url = 'https://bidplus.gem.gov.in/bidlists?d=1&page_no=' + str(page_no)
    print('URL created: ' + url)
    resp = session.get(url, verify=False)
    return resp.text


def scrap_bid_data():
    NUMBER_THREADS =5 # number of concurrent download requests
    with open('GEMconcurrent_1004.csv', 'w', newline='') as out_file:
        f = csv.writer(out_file)
        f.writerow(['Bidnumber', 'Items', 'Quantity', 'Department', 'Enddate','pageNumber'])
        with requests.Session() as session:
            page_downloader = functools.partial(download_page, session)
            with concurrent.futures.ThreadPoolExecutor(max_workers=NUMBER_THREADS) as executor:
                pages = executor.map(page_downloader, range(35, 36 ))
                page_no = 0
                for page in pages:
                    page_no += 1
                    soup_data = bs(page, 'lxml')
                    extracted_data = soup_data.find('div', {'id': 'pagi_content'})
                    if extracted_data is None or len(extracted_data) == 0:
                        print('No data at page number', page_no)
                        print(page)
                        break
                    else:
                        for idx in range(len(extracted_data)):
                            if (idx % 2 == 1):
                                bid_data = extracted_data.contents[idx].text.strip().split('\n')
                                if (len(bid_data)>1):
                                    print(page_no)
                                    if (len(bid_data[8]) > 1):

                                                            bidno = bid_data[0].split(":")[-1]
                                                            items = bid_data[8].split(":")[-1]
                                                            qnty = int(bid_data[9].split(':')[1].strip())
                                                            dept = (bid_data[10] + bid_data[15].strip()).split(":")[-1]
                                                            edate = bid_data[20].split("End Date:")[-1]
                                                            f.writerow([bidno, items, qnty, dept, edate,page_no])
scrap_bid_data()

标签: pythonpython-3.xbeautifulsoupbreakcode-formatting

解决方案


当您想要移出条件(包含它的循环)时使用中断。

更详细的解释在这里https://www.programiz.com/python-programming/break-continue

我认为您不需要在这里使用 break 。


推荐阅读