То, что вы делаете, это переопределение переменных, которые вы используете в цикле for. Для каждой итерации найденное новое значение присваивается переменной в цикле.
for i in range(5):
x = i
Когда вы запустите этот пример и посмотрите на значение, присвоенное x после цикла for, вы увидите, что значение равно 4. Вы делаете то же самое в своем коде.
Чтобы решить эту проблему, вы можете определить список вне цикла for и добавить результаты в этот список.
hotel = []
for i in range(5):
hotel.append(i)
После запуска приведенного выше кода вы увидите, что это приводит к списку.
hotel
[0,1,2,3,4]
Вы должны сделать то же самое в своем коде.
hotellist = []
for hoteltrial1 in hoteltrial:
nametrial = hoteltrial1.find_element_by_class_name("hotel-name")
hName = nametrial.text + " - "
try:
pricetrial = hoteltrial1.find_element_by_class_name("c-price")
price = pricetrial.find_element_by_css_selector("span.price-num")
currency = pricetrial.find_element_by_class_name("price-currency")
result = hName + currency.text + price.text
hotellist.append(result)
except NoSuchElementException:
result = hName + "Sold"
hotellist.append(result)
После запуска этого цикла for у вас будет список со всеми результатами, найденными в каждой итерации цикла. Вместо этого вы можете использовать словарь, чтобы получить информацию о каждом отеле и цене, выполнив поиск ключа.
Использовать dict:
hoteldict = {}
for hoteltrial1 in hoteltrial:
nametrial = hoteltrial1.find_element_by_class_name("hotel-name")
try:
pricetrial = hoteltrial1.find_element_by_class_name("c-price")
price = pricetrial.find_element_by_css_selector("span.price-num")
currency = pricetrial.find_element_by_class_name("price-currency")
hoteldict.update({nametrial.text:currency.text+price.text})
except NoSuchElementException:
hoteldict.update({nametrial.text:"Sold"})
Для словаря используйте update вместо append.
Доступ к вашему отелю:
hoteldict["The Langham Hong Kong"] #Will return $272
Надеюсь, это помогло вам.
С уважением,
Sam