Как получить конкретные данные в div с помощью Selenium и пользуя условие?
Допустим, на этом сайте часто меняются данные (магазины). Меня интересуют только определенные магазины из моего списка. Как мне получить все данные первого магазина из топа и из моего списка?
Я смог получить только весь список магазинов
Код:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.justdial.com/Bangalore/Bakeries')
name = ["Pat-a-Cake", "Chef Bakers"]
storenames = driver.find_elements(By.CLASS_NAME, "store-name")
for i in storenames:
rest = driver.find_element(By.CLASS_NAME, "store-name")
print(i.text)
Спасибо!
Ответы (2 шт):
Автор решения: Сергей Ш
→ Ссылка
for i in storenames:
if i.text in name:
result = i.text
break
else:
result = 'NO'
print(result)
второй вариант
vv =[x.text for x in storenames if x.text in name]
if vv:
result = vv[0]
else:
result = 'No'
print(result)
Автор решения: Synthezx
→ Ссылка
Спасибо! Почти то что нужно. Я дополнил код. В результате нужно, если есть такой (такие магазины), то в Excel записывает первый из списка в ячейку. Если нет - пишет в ячейку (например) - NO. Но в моем коде он записывает всегда последнее значение из найденных.
import openpyxl
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
FilePath = "C:/python/pythonProject/test.xlsx" #Запись данных в Эксцель
driver.get('https://www.justdial.com/Bangalore/Bakeries')
name = ["Pat-a-Cake", "Chef Bakers", "Glens Bake House"]
storenames = driver.find_elements(By.CLASS_NAME, "store-name")
for i in storenames:
if i.text in name:
result = i.text
print(i.text) # проверка
else:
result = 'NO'
bk = openpyxl.load_workbook(FilePath)
s = bk.active
s.cell(row=1, column=1).value = result
bk.save(FilePath)