#python #python-3.x #beautifulsoup
#python #python-3.x #beautifulsoup
Вопрос:
Я новичок в Python и в последнее время не могу нормально работать с циклом while — переменная не обновила новое значение!
Я создал цикл while, в котором URL должен обновляться при нахождении другого URL. Я также добавляю переменную ‘times’, чтобы проверить, сколько раз выполняется цикл. (count = 4 => времена последней версии = 4). Однако ‘times’ действительно изменился, но URL изменился только 1 раз.
URL = input('Enter - ')
count = input('Enter count: ')
pos = input('Enter position: ')
times = 0
links = list()
while times < int(count):
html = urlopen(URL, context=ctx).read()
soup = BeautifulSoup(html, "html.parser")
tags = soup('a')
for tag in tags:
link = tag.get('href',None)
links.append(link)
URL = links[int(pos) - 1]
times = times 1
name = re.findall('known_by_(. ).html',URL)
print(name)
Я ожидаю, что URL-адрес будет обновлен, и цикл будет запущен снова 4 раза, но получу результат только во время выполнения первого цикла. Между тем переменная ‘times’ добавлялась достаточно 4 раз.
Комментарии:
1. Я также предлагаю вам использовать больше циклов ‘Pythonic’:
for _ in range(int(count)):
Это позволит вам не использоватьtimes
переменную, поэтому у вас будет меньше мест, где может возникнуть потенциальная ошибка.
Ответ №1:
Ваш цикл выглядит так, как будто он должен выполняться count
раз, каждый раз выполняя одно и то же. Однако последние две строки не имеют отступов, поэтому они находятся вне цикла. Это означает, что они будут выполняться только один раз, когда цикл завершится.
Если вы хотите запускать последние две строки при каждом запуске цикла, вам нужно делать отступы на том же уровне, что и times = times 1
.