Извлечение изображений с помощью Selenium (Python) - PullRequest
0 голосов
/ 06 января 2019

Я изучаю веб-утилизацию и теперь хочу узнать, возможно ли извлечь изображение с веб-сайта и вставить в файл Excel?

Я работаю на этом сайте: https://www.browniespain.com/es/novedades/

А вот и мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import os
import openpyxl
from openpyxl import Workbook
import time


browser=webdriver.Safari()
browser.get("https://www.browniespain.com/es/novedades/")

primera = "//*[@id='center_column']/div[6]/div["
segunda ="]/div/div[2]/div[1]/h5/a"

productos = len(browser.find_elements_by_xpath('//*. [@id="center_column"]/div[6]/div'))

print(productos)

for n in range(1,productos+1):
  direccion = primera+str(n)+segunda
  nombre_producto = browser.find_element_by_xpath(direccion).text
  file_name = 'NovedadesBrownie.xlsx'

  if(os.path.exists(file_name)):
    workbook = openpyxl.load_workbook(file_name)
    worksheet = workbook.get_sheet_by_name('Sheet')
  else:
    workbook = Workbook()
    worksheet = workbook.active
  worksheet.cell(row=n,column=1).value = nombre_producto
  workbook.save(file_name)



  print(nombre_producto)

  primera = "//*[@id='center_column']/div[6]/div["
  segunda ="]/div/div[2]/div[1]/div[2]/span"

  productos = len(browser.find_elements_by_xpath('//*[@id="center_column"]/div[6]/div'))

  print(productos)

  for n in range(1,productos+1):
    direccion = primera+str(n)+segunda
    precio_producto = browser.find_element_by_xpath(direccion).text

    if(os.path.exists(file_name)):
      workbook = openpyxl.load_workbook(file_name)
      worksheet = workbook.get_sheet_by_name('Sheet')
    else:
      workbook = Workbook()
      worksheet = workbook.active
    worksheet.cell(row=n,column=2).value = precio_producto
    workbook.save(file_name)



    print(precio_producto)

    browser.close()

Знаете ли вы какую-либо идею извлечь изображения и вставить в этот файл Excel?

1 Ответ

0 голосов
/ 06 января 2019

Ваш синтаксис XPath неверен. Попробуйте это так:

browser.find_elements_by_xpath('//*[@id="center_column"]/div[6]/div')

Кажется, остальная часть кода работает как задумано.

Однако, чтобы получить изображения, которые вы хотели бы использовать XPath, вот так:

//div/a/img[contains(@class,'imgcat')]

затем используйте get_attribute, чтобы получить URL src:

for i in  elements:
    image = i.find_elements_by_xpath("//div/a/img[contains(@class,'imgcat')]")
    img_src = image.get_attribute("src")

Далее я рекомендую загрузить файлы на локальный диск

import urllib.request
urllib.request.urlretrieve("http://www.example.com/news/media/test.jpg", "local-filename.jpg")

и добавьте их в свой рабочий лист.

import openpyxl

wb = openpyxl.Workbook()
ws = wb.worksheets[0]
img = openpyxl.drawing.Image('local-filename.jpg')
img.anchor(ws.cell('A1'))
ws.add_image(img)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...