Ответы пользователя по тегу Парсинг
  • PHP vs GOLANG, парсер, на чем писать?

    polarlord
    @polarlord
    Как уже выше заметили - основную часть времени программа будет простаивать, т.е. ожидать ответ (загрузка страниц). В общем flow это время будет несоизмеримо больше чем обработка ответа. Поэтому оптимальнее здесь использовать асинхронную сетевую модель, когда вы отправляете массу запросов, а потом по событиям уже будут "дёргаться" обработчики ответа. Это гораздо экономнее нежели многопоточный подход, даже если это будут green threads Go. Ведь в последнем случае будет создано множество потоков с запросами, которые будут простаивать 90% времени своей работы в ожидании ответа.
    Почему такое внимание уделяется времени простаивания (ожидания ответа) ? Дело в том, что только в идеальных условиях вы получаете ответ на запрос максимально быстро. В реальных же условиях далеко не всё так безоблачно. К тому же не забывайте про использование прокси, иначе вас непременно будут банить. А использование прокси увеличивает время ожидания ответа весьма значительно.
    Ответ написан
    Комментировать
  • Чем лучше и быстрее парсить Amazon на Python?

    polarlord
    @polarlord
    Занимаюсь парсингом Амазона в промышленных масштабах (сотни тысяч страниц в день). Самая большая проблема не в библиотеках, а в том, что Амазон очень умело выявляет попытки парсинга и при этом постоянно совершенствует собственную технику обнаружения таких попыток. Поэтому самый действенный способ - это иметь в своем распоряжении приличный набор качественных прокси (с теми у которых отличается только последняя секция и номер порта долго работать не получится - попадут в черный список на срок от часа до суток, в зависимости от того как интенсивно будете через них слать запросы).
    По поводу библиотек - выбирайте их в соответствии с вашими потребностями, отталкиваясь от объема запросов которые нужно слать. Самые простые - это всякие requests, urllib, pycurl, multycurl. Ими целесообразно пользоваться в однопоточном и синхронном типе парсеров. Но практически всю работу будете писать руками. Если хотите чуть больше мощности и удобства - посмотрите в сторону Grab. Он может многое, в т.ч. удобно работает с прокси и т.д. Если нужен большой объем и скорость - используйте Scrapy. Крутая штука, но со своими правилами. Однако если нужно будет затачивать под себя - в сети много информации по нему.
    С API Амазон можно и нужно работать. Но есть несколько проблем:
    1. Существует лимит на кол-во обращений(тут подробнее, но можно в одном запросе слать до 10-ти ASIN).
    2. Самое неприятное, что по некоторым товарам (при использовании lookup-методов) инфа не приходит либо отличается от оригинала(сайта). Т.е. не нужно полагаться на то, что АПИ будет возвращать информацию полностью идентичную с их сайтом.
    3. Ограничение на кол-во товаров по которым возвращается инфа (при использовании search-методов). 100 товаров. Дальше - только парсинг. Такое ограничение не только у Амазон, у Ebay так же. Без этого - кол-во всяких дропшиперов и прочих посредников просто зашкалило бы.
    Несколько нюансов:
    -Не пытайтесь выдавать себя за Google Bot, ничего хорошего не выйдет, только потратите время.
    -Использование всяких браузерных технологий, наподобие PhantomJS или даже Selenium, толку не принесет. Там к проблеме IP еще добавятся куки и т.п. По скорости будет медленно, для больших объемов не подойдет.
    -Главное, как уже понятно, обойти систему которая определяет ботов и краулеры. Поэтому импровизируйте, экспериментируйте, думайте головой и ищите свои решения. На том конце сидят тоже люди ) В сети масса советов по этому поводу (можете начать с последнего раздела здесь).
    Ответ написан
    5 комментариев