首页 > 解决方案 > while 循环不承认 if 语句

问题描述

构建一个网络爬虫,从彩票网站获得幸运抽奖,并使用while循环来检查我需要的所有值,并添加一个 if 语句以获得一个break点。所以这是写的代码:

numbers = []
N = 7
page_still_valid = True
archive = 1

while page_still_valid:
    page_url = f'https://perlas.lt/lt/statistic/eurojackpot?tab=archive&Filter%5BdrawFrom%5D=1&Filter%5BdrawTo%5D={archive}#archive'
    res = requests.get(page_url)
    
    if 'Žaidimas nr. ' + str(archive) not in res.text:
        page_still_valid = False
        
    soup = bs4.BeautifulSoup(res.text,'lxml')
    for item in soup.select('.number'):
        numbers.append(item.text)

    archive=archive+1 
    subList = [numbers[n:n+N] for n in range(0, len(numbers), N)]

所以添加了数字的子列表,以与网站上相同的方式排列,当我检查子列表时,它充满了重复值。我不确定循环是否让我的if语句在哪里中断并且不知道它为什么给我重复的值。

lucky_numbers = []
N = 7
lottery_url = requests.get('https://perlas.lt/lt/statistic/eurojackpot?tab=stats&Filter%5BdrawFrom%5D=1&Filter%5BdrawTo%5D=437#archive')
soup = bs4.BeautifulSoup(lottery_url.text, 'lxml')
csv_file = open('eurojackpot.csv', mode='w', newline='')
csv_writer = csv.writer(csv_file, delimiter=',')

for item in soup.select('.number'):
    lucky_numbers.append(item.text)

subList = [lucky_numbers[n:n + N] for n in range(0, len(lucky_numbers), N)]

csv_writer.writerows(subList)
csv_file.close()

我可以通过for循环获取值,但我必须手动输入 url。

问题:

  1. 来自while循环的重复值
  2. 如果语句不中断

我希望我提供了足够的信息来理解

标签: pythonweb-scrapingwhile-loop

解决方案


推荐阅读