python - 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。
问题:
- 来自while循环的重复值
- 如果语句不中断
我希望我提供了足够的信息来理解
解决方案
推荐阅读
- html - 如何在 ionic 中更改 tabsHighlight 的颜色
- android - 这些 Google Maps v2 StackOverflowError 崩溃是否有解决方法/修复?
- c++ - std::unique_ptr 字符数组
- android - 为什么Android磁场传感器沿重力方向分量很大?
- javascript - 如何导入 JavaScript 库的源文件?
- java - 如何从对象调用覆盖方法
- angular - localhost:4200 和 localhost:4200/projectName 有什么区别?
- highcharts - 使用 highcharts-vue 和 axios 绘制可变数量的系列
- spring - 用于实践的 Spring 和 Hibernate 项目
- tcl - 如何从 -command 选项中的代码获取结果