Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: Web
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
1

Парсинг фото товаров с алиэкспресс в крупном разрешении

11.08.2017, 12:50. Просмотров 857. Ответов 15

Хотел написать парсер фото товаров с алиэкспресс вместе с ссылками на сами товары, но когда, но не нашел ссылки на jpg, на превьюшки есть, а на сами фото не могу найти. Как их достать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2017, 12:50
Ответы с готовыми решениями:

Парсинг описания товаров с Aliexpress
Всем привет! По url через request requests.get(url) получаю отдачу по товару...

Нужны фото материнской платы Asus a53s в крупном плане
Здравствуйте. Проблема моя такова - принесли бук на который написяли (видать на...

Парсинг товаров и изображений
Доброго дня! Написал скриптик, парсящий данные о товарах с другого сайта....

Парсинг Вк API. Фото
Ребята пожалуйста. Требуется помощь. Нужно спарсить данные из группы. Всего...

Как удалить все фото товаров с магазина?
в результате разнообразных экспериментов по загрузке данных с 1С, у меня вдруг,...

15
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
11.08.2017, 14:10 2
так вот же

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
    if(!window.runParams) {
    window.runParams = {};
    }
    window.runParams.imageServer="https://ae01.alicdn.com";
    window.runParams.imageDetailPageURL="";
    
    window.runParams.imageBigViewURL=[
        "https://ae01.alicdn.com/kf/HTB1RYANSpXXXXcmXpXXq6xXFXXXS/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1HugiSpXXXXc9aXXXq6xXFXXXk/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1h2kBSpXXXXXEXVXXq6xXFXXXQ/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1kjgvSpXXXXXZXVXXq6xXFXXXU/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1L7MBSpXXXXXtXVXXq6xXFXXXZ/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1JEsVSpXXXXc7XXXXq6xXFXXXi/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg"
        ];
        window.runParams.mainBigPic = "https://ae01.alicdn.com/kf/HTB1RYANSpXXXXcmXpXXq6xXFXXXS/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg";
</script>
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
11.08.2017, 14:55  [ТС] 3
Здравствуйте, эти фото маленькие превьюшные, мне надо большие, видел их где-то в get запросах, но как туда пролезть не знаю и еще я не знаю javaScript
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
11.08.2017, 15:53 4
То есть это превью?
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
11.08.2017, 16:55  [ТС] 5
Нет. А как питоном это достать? Например, набираю категорию и для товаров этой категории собираю фото
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
11.08.2017, 17:29 6
Цитата Сообщение от DarkChirik Посмотреть сообщение
А как питоном это достать?
Один из N способов:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import re
 
html = """\
<script type="text/javascript">
    if(!window.runParams) {
    window.runParams = {};
    }
    window.runParams.imageServer="https://ae01.alicdn.com";
    window.runParams.imageDetailPageURL="";
    
    window.runParams.imageBigViewURL=[
        "https://ae01.alicdn.com/kf/HTB1RYANSpXXXXcmXpXXq6xXFXXXS/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1HugiSpXXXXc9aXXXq6xXFXXXk/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1h2kBSpXXXXXEXVXXq6xXFXXXQ/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1kjgvSpXXXXXZXVXXq6xXFXXXU/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1L7MBSpXXXXXtXVXXq6xXFXXXZ/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1JEsVSpXXXXc7XXXXq6xXFXXXi/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg"
        ];
        window.runParams.mainBigPic = "https://ae01.alicdn.com/kf/HTB1RYANSpXXXXcmXpXXq6xXFXXXS/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg";
</script>"""
 
 
list_= re.findall(r'(?s)(imageBigViewURL=.+\]);',html)[0]
exec(list_ )
print(imageBigViewURL)
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
11.08.2017, 17:53  [ТС] 7
Цитата Сообщение от Jabbson Посмотреть сообщение
так вот же

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
    if(!window.runParams) {
    window.runParams = {};
    }
    window.runParams.imageServer="https://ae01.alicdn.com";
    window.runParams.imageDetailPageURL="";
    
    window.runParams.imageBigViewURL=[
        "https://ae01.alicdn.com/kf/HTB1RYANSpXXXXcmXpXXq6xXFXXXS/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1HugiSpXXXXc9aXXXq6xXFXXXk/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1h2kBSpXXXXXEXVXXq6xXFXXXQ/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1kjgvSpXXXXXZXVXXq6xXFXXXU/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1L7MBSpXXXXXtXVXXq6xXFXXXZ/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg",
        "https://ae01.alicdn.com/kf/HTB1JEsVSpXXXXc7XXXXq6xXFXXXi/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg"
        ];
        window.runParams.mainBigPic = "https://ae01.alicdn.com/kf/HTB1RYANSpXXXXcmXpXXq6xXFXXXS/AUKEY-Quick-Charge-3-0-Power-Bank-10050mAh-Battery-Two-Way-Quick-Charging-Powerbank-Portable-Charger.jpg";
</script>
А как программно получить ссылки, которые у вас в коде уже написаны?
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
11.08.2017, 18:03 8
Цитата Сообщение от DarkChirik Посмотреть сообщение
А как программно получить ссылки
Любым доступным парсером:bs4,grab,lxml,html.parser.
Более мне ничего неизвестно из вашей задачи, даже url который вы хотите парсить.
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
11.08.2017, 21:03  [ТС] 9
Да вы правы: ссылку я не дал простите. Мне нужно чтобы пользователь ввел в поиск на сайте "алиэкспресс" определенный вид товара, потом скопировал ссылку на результат поиска в инпут скрипта, а скрипт вытянул ссылки на заказ каждого товара и его изображение и так по странично, чтобы потом скопировать найденые ссылки в текстовый файл и поместить изображения в папку с этим файлом.
---
Спасибо вам теперь я знаю, что ссылки на фото начинаются с:
"https://ae01.alicdn.com/kf..."

Добавлено через 45 минут
Подскажите какой из написаных парсеров быстрее? Сейчас хочу использовать метод xpath, но не знаю как создать запрос на поиск определенных ссылок, в моем случае: "https://ae01.alicdn.com/kf...." как мне сделать это?

Добавлено через 1 час 39 минут
https://msdn.microsoft.com/ru-ru/library/ms256060(v=vs.120).aspx
Руководствуясь этим материалом делал так:
('.//a/@href["https://ae01.alicdn.com/kf"]')
Но все равно выдает ссылки не по фильтру, а все что есть.
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
12.08.2017, 01:24 10
Лучший ответ Сообщение было отмечено DarkChirik как решение

Решение

Цитата Сообщение от DarkChirik Посмотреть сообщение
Подскажите какой из написаных парсеров быстрее?
Считается что lxml, поскольку написан на Си.
bs4 и grab это, собственно, не парсеры, а обертки над парсерами lxml\htmllib5\html.parser + дополнительный функционал для граббинга.
----------------------
Простой пример для парсинга ссылок на утюги :-)

Python
1
2
3
4
5
6
7
8
9
10
11
import requests
import lxml.html
 
url = "https://ru.aliexpress.com/wholesale?catId=0&initiative_id=SB_20170811132257&SearchText=утюг"
resp = requests.get(url)
tree = lxml.html.fromstring(resp.text)
xpath = './/a[@class="history-item product "]'  # нафига в конце имени класса пробел нужно спрашивать у дезигнера сайта :-)
links = tree.xpath(xpath)
for a in links:
    print(a.attrib.get('title')) # название товара
    print(a.attrib.get('href')) # ссылка на страницу заказа
Вообще, описания товаров лежат в <div> класса info. А внутри них уже есть <a> с классом "history-item product ".
Однако вторых почему-то меньше чем первых. С этим разбирайтесь сами.

P.P. S. Ссылки на большие фото я видел только на странице заказа. Следовательно, если они нужны - нужно парсить и эту страницу.

Добавлено через 4 минуты
Бесплатное API у этого сайта интересно есть?
А то html у них не самый приятный для парсинга.

Добавлено через 29 минут
Цитата Сообщение от Garry Galler Посмотреть сообщение
описания товаров лежат в <div> класса info.
Глянул на страницы других товаров: на самом деле на каждой странице у этих div'ов, обертывающих описание, разные классы. Какая-то общая логика сохраняется только для элементов <a>.
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
12.08.2017, 12:20  [ТС] 11
Спасибо. Не подскажите пожалуйста как сделать фильтр по поиску, например, чтобы парсились только ссылки на фото (.jpg)?
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
12.08.2017, 13:13 12
Приведите пример конкретной ссылки на страницу с которой нужно взять эти ссылки и укажите какие именно ссылки нужны.
Если приводить обобщенный пример то, например, так:
Python
1
2
3
print(tree.xpath('.//*[contains(@*,".jpg")]')) # все элементы содержащие в любых атрибутах значение .jpg
print(tree.xpath('.//*[contains(@src,".jpg")]/@src')) # значение атрибута src из  всех элементов содержащих атрибут src
print(tree.xpath('.//img[contains(@src,".jpg")]/@src')) # значение атрибута src из элементов <img> содержащих атрибут src
Добавлено через 2 минуты
Ссылки на фото в атрибутах href вы не найдете. Для них используется тэг <img> и атрибут src или image-src (на этом сайте).
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
12.08.2017, 13:20  [ТС] 13
Спасибо. Ссылки я нашел, а это спросил уже, потому что, интересно
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
12.08.2017, 13:46 14
Цитата Сообщение от DarkChirik Посмотреть сообщение
Ссылки я нашел
И каким образом?
--------------------------------------
Еще пару вариантов с использованием встроенных функций XPath:
Python
1
2
print(tree.xpath('.//img[starts-with(@src,"//ae01.alicdn.com")]/@src')) # значение атрибута src из элементов <img> если значение атрибута src начинается с "//ae01.alicdn.com
print(tree.xpath('.//img[substring(@src,string-length(@src) - 3)=".jpg"]/@src')) # значение атрибута src из элементов <img> если значение атрибута src заканчивается на .jpg; минус 3 потому что индексация в XPath с 1
0
DarkChirik
2 / 2 / 0
Регистрация: 23.06.2017
Сообщений: 72
12.08.2017, 13:53  [ТС] 15
Цитата Сообщение от Garry Galler Посмотреть сообщение
И каким образом?
--------------------------------------
Еще пару вариантов с использованием встроенных функций XPath:
xpath('.//meta[@property="og:image"]') от ссылки с товаром

Добавлено через 1 минуту
picture = fromstring(get_html(link)).xpath('.//meta[@property="og:image"]')
for link in picture:
download_img(link.attrib.get('content'))
0
Garry Galler
1429 / 1153 / 424
Регистрация: 28.10.2013
Сообщений: 2,922
12.08.2017, 14:20 16
А, так это на странице заказа. Понятно.
Можно также и без цикла сразу извлекать текст атрибута:
Python
1
xpath('.//meta[@property="og:image"]/@content')[0]
Хотя, конечно, цикл дает гарантию, что не будет ошибки обращения к несуществующему индексу, если вдруг текста (точнее атрибута) не окажется.
Но вот так будет просто пустая строка, если текста не окажется:
Python
1
2
res = tree.xpath('string(.//meta[@property="og:image"]/@content)')
print(res)
0
12.08.2017, 14:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2017, 14:20

Не появляются фото товаров, хотя в админке есть – в чём беда?
Доброго времени суток! В наличии &quot;Битрикс Малый бизнес&quot; и два сайта (s1 и...

При разрешении 800х600 на сайте появляется горизонтальная полоса прокрутки, а при разрешении 1152х864 на странице справа пустота.
На главной странице моего сайта http://www.univer-comp.ru при разрешении...

Парсинг фото с сайта или использование invoke-webrequest
Добрый день. Интересует возможность,как можно скачать фото дня с яндекс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru