Я пытаюсь очистить и перепрофилировать изображения и заголовки новостей со страницы ленты новостей, чтобы можно было повторно использовать их на вывесках (Xibo). По сути, мне нужны только первые три строки основного содержимого этого URL-адреса без какой-либо информации в верхнем/нижнем колонтитуле, без дополнительного кода/сценариев и т. д. Только изображение среднего размера и заголовок под ним. Хотел бы очистить изображения/заголовки, а затем отображать простую HTML-страницу с помощью Flask один раз в день для чтения CMS.
https://news.clemson.edu/tag/extension/
Я понял, что в этом случае мне нужен селен для получения обработанной страницы?
В приведенном ниже коде мне трудно правильно найти URL-адреса изображений.
Это будет прочитано на странице и прокручиваю, но изображений не находит. Я пробовал некоторые вложенные элементы div, но тоже безуспешно. Может ли кто-нибудь указать мне правильное направление, чтобы получить URL-адреса изображений (и, в конечном итоге, заголовки)?
Код: Выделить всё
#News feed test for Xibo Signage
#from flask import Flask, render_template
from markupsafe import Markup
#app=Flask(__name__)
from urllib.request import Request, urlopen
from bs4 import BeautifulSoup
import requests
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#installed chrome driver in scripts so don't need next lines?
#chromedriver_path = '...'
driver = webdriver.Chrome()
url = "https://news.clemson.edu/tag/extension/"
driver.get(url)
# wait (up to 20 seconds) until the images are visible on page
images = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "site-main")))
# scroll to the last image, so that all images get rendered correctly
driver.execute_script('arguments[0].scrollIntoView({block: "center", behavior: "smooth"});', images[-1])
time.sleep(2)
# PRINT URLS USING SELENIUM -for test (will pass to Flask)
print('Selenium')
for img in images:
print(img.get_attribute('src'))
#@app.route('/')
#def home():
# return render_template('home.html',thumbnailmk=thumbnailmk)
#if __name__ == '__main__':
# app.run(host='0.0.0.0')
# app.run(debug=True)
Источник: https://stackoverflow.com/questions/781 ... age-source