Форум сайта python.su
Помогите адаптировать скрипт под любой сайт где есть качественные картинки товаров.
Скрипт: https://holoborodko.com.ua/software/parsing-images-on-python/
Список подходящих сайтов
https://rozetka.com.ua
https://www.ebay.com
Любой другой выпадаюющий с гугл поиска при вводе артикула товара.
Список товаров/артикулов.
8809071365238
8809520941846
8809520941860
8809317961149
8809520941907
Прикреплённый файлы: python-site-parser-with-logs-master.zip (3,5 KБ)
Офлайн
tihiyТы его не сможешь адаптировать потому, что он сделан непрофессионально. Именно поэтому нихрена не понятно, что он делает (то есть надо сидеть три часа разбираться, нет ли в нём ошибок вообще), и переделать его тоже нельзя, так как он не приспособлен для этого изначально. Профессиональный же скрипт можно поправить в двух-трёх местах, чтобы он начал работать полностью по-другому, при этом не имея в себе ошибок. В таких скриптах всё прозрачно и везде видно сразу, что он делает и что он правильный в каждой своей части и в соединениях между частями.
Помогите адаптировать скрипт
Отредактировано py.user.next (Авг. 23, 2019 06:28:12)
Офлайн
py.user.nextК сожалению в данный момент я не располагаю стольким временем, чтоб заново написать скрипт. Нужно многому учиться.
Отредактировано tihiy (Авг. 23, 2019 18:24:48)
Офлайн
tihiy
К сожалению в данній момент я не располагаю стольким временем, чтоб заново написать скрипт
Офлайн
FishHookИзвиняюсь если вас потревожил и отвлек своим сообщением. Вы так много написали текста но к сожалению не того, что мне поможет. Все же спасибо.
import urllib.request import os import time from bs4 import BeautifulSoup import re #Определяем время в системе time = time.strftime("%Y-%m-%d-%H-%M") print(time) #Определяем директорию в системе dir = os.path.dirname(os.path.abspath(__file__)) #Прописываем хост сайта, который будем парсить host = 'https://www.ebay.com' #Определяем название файла с логом. file = open("log-{}.txt".format(time), "w") #Пробуем что-то написать в файл. file.write(time) for line in open("products.txt"): data = line.split(",") Serchartikul = data[1].strip() #Параметры строки поиска на сайте не знаю как формировать из 2х частей славо богу работает без второй части #/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=8809071365238&_sacat=0&LH_TitleDesc=0&_osacat=0&_odkw=8809520941846 url = "{}/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw={}".format(host, data[0]) #Получаем ответ print(url) url = urllib.request.urlopen(url) if url.getcode() == 200: soup = BeautifulSoup(url, "lxml") product = soup.find('div', {'class': 's-item__image'}) links = product.find_all('a') #Тут Нужна проверка для выхода из цикла, на случай если переменнаproduct = soup.find('div', {'class': 's-item__image'}) links = product.find_all('a')я links = пустая + запись в текстовый файл артикула товара которого нет на сайте соответственно нет картинок. for a in links: link = a.get('href') print(link) #Достаем ссылку на товар в результатах поиска link = urllib.request.urlopen(link) if link.getcode() == 200: soup = BeautifulSoup(link, "lxml") #Разбираем страницу товара picture = soup.find('meta', content=re.compile('i.ebayimg.com')).get('content') print(picture) #href = "{}{}".format(host, data) #Отладочный принт #print(href) img = urllib.request.urlopen(picture).read() #Обрабатываем имя картинки. чтобы сохранить в коректном формате name = data[0] +'.jpg' print(name) #Формируем путь для сохранения картинок path = "{}/images/{}.{}".format(dir, Serchartikul, name) f = open(path, "wb") f.write(img) f.close() else: print("Не удалось открыть страницу товара {}".format(data[1])) else: print("Не получен HTTP ответ 200")
Отредактировано tihiy (Авг. 23, 2019 20:51:35)
Офлайн
Нужно добавить
try:
except AttributeError:
continue
О Исключениях в python. Конструкция try - except для обработки исключений
https://pythonworld.ru/tipy-dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html
Отредактировано tihiy (Авг. 23, 2019 21:57:14)
Офлайн