#python #selenium #parsing
#python #selenium #синтаксический анализ
Вопрос:
Я сравниваю хэш-значения html-страницы для обнаружения новой активности, я настроил триггер, и он работает хорошо, но у меня возникают проблемы с выходом из цикла, как только он обнаруживает новую активность, и это не триггер.
Мне сказали, что это простая проблема, но я не знаком с циклами.
Итак, у меня есть
if myhash == myhash2: # match hashes to detect site change
print('[-]No Change Detected on ' str(url2) "")
time.sleep(4)
if myhash != myhash2:
status_string = '[!]New hash',""
Сравнение состояний сайта по хэш-значению
mysplitpokemon = (target_element.text.split("!pokemon", 1)[1])
Сопоставление моего триггерного слова и извлечение слова после него.
driver = webdriver.Firefox()
driver.get("http://www.qwerty.com")
Продолжайте что-то делать со значениями..
Я полагаю, что с этого момента я неправильно выполняю цикл, мне это нужно, чтобы избежать вложенного цикла восстановления mysplitpokemon
и вернуться к if myhash == myhash2
, но сохранить значение mysplitpokemon
до следующего запуска основного цикла. Но вместо этого webdriver просто открывает бесконечные экземпляры, и ему не удается сопоставить текст после !pokemon
итак, мой цикл
while True:
# first page request
while 1:
# second request to the same page
try:
# match the hashes
if myhash == myhash2:
something()
if myhash != myhash2:
continue
while True:
parseFunction()
postFunction()
break
Комментарии:
1. Я не вижу циклов в вашем коде. Пожалуйста, вносите обновления
2. Ваш отступ в коде, содержащем циклы, кажется выключенным (т. Е. После
try
инструкции нет отступа). Кроме того, это должно бытьcontinue
вместоcontinue()
. docs.python.org/3/tutorial / … может быть тем, что вы ищете.3. Я пытался исправить ваши проблемы с отступами, насколько я понимаю, пожалуйста, пересмотрите эти изменения. Однако в своем текущем состоянии
try
оператор не служит никакой цели. Также, по крайней мере, для меня не совсем ясно, чего вы пытаетесь достичь. Попробуйте подробнее остановиться на этом. Что вы считаете «основным циклом» и «вложенным циклом» — всего три вложенных цикла и четыре цикла. В каком цикле вы «извлекаетеmysplitpokemon
«? В настоящее время это неясно, потому что вы опустили это в своей окончательной демонстрации кода.4. Извините, но я заплатил парню, чтобы решить это, и это тоже его некоторое время, так что, конечно, это была непростая проблема. Он пошел и записал хэш-значения в файл, а затем прочитал файл, что я мог бы сделать сам, но я пытаюсь избежать избыточного кодирования. tl; dr проблема решена, спасибо за усилия
Ответ №1:
else:
pass
except Exception as ex:
print(ex)
driver.quit()
pass
Дважды экранируйте цикл при правильной обработке ошибок.