#selenium #web-scraping
#selenium #очистка веб-страниц
Вопрос:
Я справляюсь с проблемой, которую я действительно не могу решить. Я пытаюсь получить информацию с определенной страницы, используя библиотеку selenium. Если у меня есть приведенный ниже код, я получаю правильное значение.
from selenium import webdriver
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://finance.yahoo.com/quote/DAI.DE?p=DAI.DEamp;.tsrc=fin-srch'
driver = webdriver.Chrome('C:/Users/Startklar/Desktop/CFDS/chromedriver.exe')
driver.get(url)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
articles = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.js-stream-content")))
for article in articles:
try:
date = article.find_element_by_xpath('/html/body/div[1]/div/div/div[1]/div/div[3]/div[1]/div/div[5]/div/div/div/ul/li[4]/div/div/div[1]/div/span[2]').text
print(date)
except:
print("")
Как только я добавляю второе значение для поиска, и код выглядит так, как показано ниже, я вообще не получаю никакого результата:
from selenium import webdriver
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://finance.yahoo.com/quote/DAI.DE?p=DAI.DEamp;.tsrc=fin-srch'
driver = webdriver.Chrome('C:/Users/Startklar/Desktop/CFDS/chromedriver.exe')
driver.get(url)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
articles = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.js-stream-content")))
for article in articles:
try:
date = article.find_element_by_xpath('/html/body/div[1]/div/div/div[1]/div/div[3]/div[1]/div/div[5]/div/div/div/ul/li[4]/div/div/div[1]/div/span[2]').text
source = article.find_element_by_xpath('/html/body/div[1]/div/div/div[1]/div/div[3]/div[1]/div/div[5]/div/div/div/ul/li[4]/div/div/div[1]/div/span[1]').text
print(date,source)
except:
print("")
Как происходит? В чем разница между copy xpath или copy fullxpath? И почему я получаю только один результат или один результат дважды вместо всех дат и источников на сайте?
Комментарии:
1. Здесь будет использоваться не полный xpath, а меньший xpath, связанный со статьей.
2. наличие всех элементов возвращается, когда он находит хотя бы один элемент. Вы предполагаете, что он находит все… но даже когда вы получаете массив, это все равно не то, что вы ищете. Вы предоставляете ему полный DOM-путь к определенному элементу, поэтому на самом деле нет необходимости в «статье в статьях». Кроме того, если это содержимое генерируется динамически, этот путь DOM, вероятно, является переменным.
3. Он динамически генерируется при отложенной загрузке.
4. что означает «он динамически генерируется с отложенной загрузкой»?
5. При прокрутке вниз загружается содержимое.