ScreenAvito_50_1_v3
Делает принскрины по ссылкам, выгружает на облачный ресурс для доступаuser_2065311
python
a year ago
5.0 kB
9
Indexable
# изменил принцип названия скриншотов по окончанию ссылки а также добавил скрипт который можно использовать отдельно, а имеенно выгрузка скриншотов через API imgbb.com import requests import os api_key = 'imgbbAPI= вставьте ключ' # Замените на ваш API ключ url = 'https://api.imgbb.com/1/upload' # Путь к папке с изображениями folder_path = '/Users/wl/Desktop/screen' # Перебор всех файлов в папке for filename in os.listdir(folder_path): if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')): image_path = os.path.join(folder_path, filename) # Отправляем запрос with open(image_path, 'rb') as image: response = requests.post(url, data={'key': api_key}, files={'image': image}) # Обрабатываем ответ if response.status_code == 200: data = response.json() print(f"Изображение {filename} загружено: {data['data']['url']}") else: print(f"Ошибка при загрузке изображения {filename}") # предъидущий скрипт в конце, в этом коде добавлен пользовательский интерфейс для ввода адресов и принтскринделается всей страницы, а не только видимой части. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from openpyxl import Workbook, load_workbook from openpyxl.drawing.image import Image from tkinter import Tk, simpledialog import time import os def input_links(): root = Tk() root.withdraw() links = [] while True: link = simpledialog.askstring("Ввод ссылки", "Введите ссылку (или оставьте пустым для завершения):") if not link: break links.append(link) return links links = input_links() # Путь к файлу Excel в текущей директории excel_path = 'scr.xlsx' # Создать новый файл Excel workbook = Workbook() sheet = workbook.active chrome_options = Options() chrome_options.add_argument("--headless") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) for index, url in enumerate(links, start=1): driver.get(url) time.sleep(5) page_height = driver.execute_script("return document.body.scrollHeight") driver.set_window_size(1920, page_height) time.sleep(2) # Сохранение скриншота в текущей директории screenshot_path = f'screenshot_{index}.png' driver.save_screenshot(screenshot_path) sheet.cell(row=index, column=2, value=url) if os.path.exists(screenshot_path): img = Image(screenshot_path) img.width, img.height = 123, 160 sheet.add_image(img, f'C{index}') workbook.save(excel_path) driver.quit() ``` from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from openpyxl import Workbook, load_workbook from openpyxl.drawing.image import Image import os def get_ad_links(driver, url): driver.get(url) ad_elements = driver.find_elements(By.CSS_SELECTOR, "a[data-marker='item-title']") links = [element.get_attribute('href') for element in ad_elements] return links def take_screenshot(url, driver, screenshot_path): driver.get(url) driver.save_screenshot(screenshot_path) def insert_screenshot_to_excel(excel_path, screenshot_path, row): workbook = load_workbook(excel_path) sheet = workbook.active img = Image(screenshot_path) img.width, img.height = 123, 160 # Уменьшение размера изображения cell = f'C{row}' sheet.add_image(img, cell) workbook.save(excel_path) def main(url, excel_path): driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) ad_links = get_ad_links(driver, url) row = 1 for ad_link in ad_links: screenshot_path = f'screenshot_{row}.png' take_screenshot(ad_link, driver, screenshot_path) insert_screenshot_to_excel(excel_path, screenshot_path, row) row += 1 driver.quit() url = 'https://www.avito.ru/nizhniy_novgorod/kommercheskaya_nedvizhimost/prodam-ASgBAgICAUSwCNJW?context=H4sIAAAAAAAA_0q0MrSqLraysFJKK8rPDUhMT1WyLrYyNLNSKk5NLErOcMsvyg3PTElPLVGyrgUEAAD__xf8iH4tAAAA' #СМЕНИ ССЫЛКУ excel_path = 'screenshots.xlsx' # файл для выгрузки результата main(url, excel_path) ````
Editor is loading...
Leave a Comment