Я создаю вложенный словарь с несколькими элементами, которые я извлекаю из https://www.koodomobile.com/rate-plans?INTCMP=KMNew_NavMenu_Shop_Plans. Тем не менее, даже несмотря на то, что я могу активно видеть, что я собираю точные данные (когда я печатаю), кажется, что он повторяет значения ключа, продумывая весь диктат. Некоторые из повторяющихся вещей: ежемесячная стоимость, dataNum, минуты, сообщения.
Я хотел бы иметь возможность правильно вкладывать свой словарь planPermutation в другой словарь planDicts.
вот пример моего вывод:
{'Принесите свое собственное устройство 30': {'Имя типа плана': 'Принесите свое собственное устройство', 'monthCost': 75, 'dataNum': 10000, 'minutes': «Неограниченный», «обмен сообщениями»: «Неограниченный»},
«Принесите свое собственное устройство 35»: {«Имя типа плана»: «Принесите свое собственное устройство», «MonthCost»: 75, «dataNum» : 10000, «минут»: «Неограниченный», «обмен сообщениями»: «Неограниченный»},
«Принесите свое собственное устройство 45»: {«Имя типа плана»: «Принесите свое собственное устройство», «ежемесячная стоимость» ': 75,' dataNum ': 10000,' minutes ':' Unlimited ',' Messaging ':' Unlimited '}, ...}
def planDictsGenerator():
planPermutation = {}
index = 1
# name
planName = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#block-system-main > div > div > div.view-content > div.rate-plan-block > div.tab-header-wrapper > h2')))
planName = str(planName[0].text)
planPermutation["plan type Name"] = planName
subplans = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.panel-col-first')))
for plan in subplans:
driver.execute_script("arguments[0].scrollIntoView();", plan)
driver.execute_script("arguments[0].click();", plan)
time.sleep(1)
# monthlyCost
monthlyCost = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .koodo-currency')))
monthlyCost = monthlyCost[0].text
monthlyCost = int(monthlyCost.replace('$', ''))
planPermutation["monthlyCost"] = monthlyCost
# Data
dataNum = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .views-field-field-data-mobile-value strong')))
dataNum = dataNum[0].text
if "GB" in dataNum:
dataNum = int(dataNum.replace(' GB', '')) * 1000
else:
dataNum = int(dataNum.replace(' MB', ''))
planPermutation["dataNum"] = dataNum
# minutes
minutes = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .views-field-field-canada-wide-any-min-mobile strong')))
minutes = minutes[0].text
if "Unlimited" in minutes:
minutes = "Unlimited"
else:
minutes = int(minutes)
planPermutation["minutes"] = minutes
# messaging
messaging = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.active .views-field-field-unlim-text-and-pic-mobile strong')))
messaging = messaging[0].text
if "Unlimited" in messaging:
messaging = "Unlimited"
else:
messaging = int(messaging)
planPermutation["messaging"] = messaging
dictName = planName + " " + str(monthlyCost)
planDicts[dictName] = planPermutation
print(planPermutation)
[1]: https://www.koodomobile.com/rate-plans?INTCMP=KMNew_NavMenu_Shop_Plans