Для того, чтобы получить текст, который я хочу
d1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/table[1]/tbody/tr'))).text
Мне нужно дождаться загрузки либо wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'a.related-keyword-item')))
, либо wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'span.related-keyword-item')))
с определенным значением текста, чтобы получить d1
.
Над ky
указан код для входа на страницу, моя проблема с кодом ниже ky
.
Если wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'a.related-keyword-item')))
не найден, он будет ждать wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'span.related-keyword-item')))
. Но я не хочу ждать 60 секунд, чтобы продолжить ожидание второго элемента, если первого элемента уже нет.
И если я добавлю более тысячи ключевых слов в ky
, это будет отображаться raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: try
Я пытался решить эту проблему более недели, и я отчаянно нуждаюсь в ком-то чтобы выручить меня. Это мой код, и код хорошо работает только с сотнями ключевых слов в ky
.
import xlrd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
driver = webdriver.Chrome(executable_path=r"C:\Users\Kim woo jae\PycharmProjects\100개 키워드\chromedriver.exe")
list = []
list1 = []
list2 = []
list3 = []
driver.get("https://itemscout.io/keyword/")
wait = WebDriverWait(driver, 60)
b = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div[2]/input')))
b.clear()
b.send_keys('화장대')
c = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div[2]/span')))
c.click()
d = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[ @id="container"]/table[1]/tbody/tr'))).text
ky = '화장대','침대전신거울','서랍장','까사마루3단행거','옷장', '5단서랍장','6평농막'
for k in ky:
b1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div[1]/input')))
b1.clear()
b1.send_keys(k)
c1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/div[1]/span')))
c1.click()
time.sleep(1)
try:
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'a.related-keyword-item')))
except:
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'span.related-keyword-item')))
d1 = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="container"]/table[1]/tbody/tr'))).text
d1 = (d1).replace(',', '.')
d1 = ' '.join(d1.splitlines())
d1 = d1.replace(' ', ',')
result = [x.strip() for x in d1.split(',')]
d = [result[2]]
s = [result[3]]
c = [result[4]]
print([k],d,s,c)