#python #django #selenium #for-loop #nested-loops
#python #django #селен #для цикла #вложенные циклы
Вопрос:
def show(request):
driver = webdriver.Chrome('/Users/colegulledge/desktop/chromedriver')
driver.get('https://www.horrycounty.org/bookings')
sleep(random() 2)
date_form = driver.find_element_by_id('txtBookingDate')
##we are going to loop through the start date-end date in this input box
def daterange(start_date, end_date):
for n in range(int((end_date - start_date).days)):
yield start_date timedelta(n)
start_date = date(2020, 1, 1)
end_date = date(2020, 1, 3)
def change_date_format(dt):
return re.sub(r'(d{4})/(d{1,2})/(d{1,2})', '\2-\3-\1', dt)
##to change the format to month-day-year
for single_date in daterange(start_date, end_date):
days = (single_date.strftime(format("%Y/%m/%d")))
days = (change_date_format(days))
date_form.send_keys(days)
sleep(2)
##Changing the date format and using send keys we put in in the inputbox
for el in days:
search = driver.find_element_by_css_selector("span.btn-primary")
driver.execute_script("arguments[0].click();", search)
sleep(2)
inmate_info = driver.find_elements_by_class_name("cellLarge")
rs = []
for p in range(len(inmate_info)):
rs.append(inmate_info[p].text.strip())
date_form.clear()
print(rs)
##the website keeps the previous date in the input box, so we must
##clear the input box and repeat the loop
return HttpResponse(rs)
Поэтому всякий раз, когда я это делаю, rs возвращает только последний день записей.. Я считаю, что моя функция не добавляется в список, вместо этого она заменяет его. Это может быть очевидно, но я неопытен и работаю над своим первым крупным проектом. Есть идеи / предложения? Спасибо
Комментарии:
1. Перемещение
rs = []
над циклом2. вау, это было просто, спасибо, Майк!
Ответ №1:
(перемещение комментария в ответ)
Вы выполняете сброс rs
в цикле, поэтому все предыдущие данные очищаются.
Чтобы собрать все данные, переместитесь rs = []
выше цикла:
rs = []
for single_date in daterange(start_date, end_date):
.......