@Bjornie
Изучаю Python

Чем лучше и быстрее парсить Amazon на Python?

Пишу парсер продуктов Amazon. Парсинг исключительно статических html-страниц, т.е. не предполагается парсить ни через AJAX ни тем более динамику (например Selenium). На странице интересуют некоторые текстовые поля (цены, доставка и т.д.). Т.к. продуктов много, а у Amazon стоит куча защит от парсинга, то у меня возник вопрос по правильному выбору библиотек для создания надежного парсера, который умеет работать через прокси и делать это быстро.

Я уже написал частично код на BeautifulSoup (lxml) + requests (with proxy list) + Random UA, но по моим ощущениям как-то это работать не очень быстро. Стоит ли посмотреть на другие библиотеки? Подскажите, у кого был похожий опыт. Стоит ли для этого использовать Scrapy или что-то еще?

Либо если делать по указанному стеку, то на какие возможности языка рекомендуете обратить внимание, чтобы ускорить работы парсера?
  • Вопрос задан
  • 4720 просмотров
Решения вопроса 1
polarlord
@polarlord
Занимаюсь парсингом Амазона в промышленных масштабах (сотни тысяч страниц в день). Самая большая проблема не в библиотеках, а в том, что Амазон очень умело выявляет попытки парсинга и при этом постоянно совершенствует собственную технику обнаружения таких попыток. Поэтому самый действенный способ - это иметь в своем распоряжении приличный набор качественных прокси (с теми у которых отличается только последняя секция и номер порта долго работать не получится - попадут в черный список на срок от часа до суток, в зависимости от того как интенсивно будете через них слать запросы).
По поводу библиотек - выбирайте их в соответствии с вашими потребностями, отталкиваясь от объема запросов которые нужно слать. Самые простые - это всякие requests, urllib, pycurl, multycurl. Ими целесообразно пользоваться в однопоточном и синхронном типе парсеров. Но практически всю работу будете писать руками. Если хотите чуть больше мощности и удобства - посмотрите в сторону Grab. Он может многое, в т.ч. удобно работает с прокси и т.д. Если нужен большой объем и скорость - используйте Scrapy. Крутая штука, но со своими правилами. Однако если нужно будет затачивать под себя - в сети много информации по нему.
С API Амазон можно и нужно работать. Но есть несколько проблем:
1. Существует лимит на кол-во обращений(тут подробнее, но можно в одном запросе слать до 10-ти ASIN).
2. Самое неприятное, что по некоторым товарам (при использовании lookup-методов) инфа не приходит либо отличается от оригинала(сайта). Т.е. не нужно полагаться на то, что АПИ будет возвращать информацию полностью идентичную с их сайтом.
3. Ограничение на кол-во товаров по которым возвращается инфа (при использовании search-методов). 100 товаров. Дальше - только парсинг. Такое ограничение не только у Амазон, у Ebay так же. Без этого - кол-во всяких дропшиперов и прочих посредников просто зашкалило бы.
Несколько нюансов:
-Не пытайтесь выдавать себя за Google Bot, ничего хорошего не выйдет, только потратите время.
-Использование всяких браузерных технологий, наподобие PhantomJS или даже Selenium, толку не принесет. Там к проблеме IP еще добавятся куки и т.п. По скорости будет медленно, для больших объемов не подойдет.
-Главное, как уже понятно, обойти систему которая определяет ботов и краулеры. Поэтому импровизируйте, экспериментируйте, думайте головой и ищите свои решения. На том конце сидят тоже люди ) В сети масса советов по этому поводу (можете начать с последнего раздела здесь).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@warnerbrowsers
Вот пример парсинга Amazon на Scrapy, может, пригодится.
blog.datahut.co/tutorial-how-to-scrape-amazon-usin...
Ответ написан
Комментировать
A-parser крутое решение для парсинга Амазон.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы