Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (15)
  • Чем лучше и быстрее парсить 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, а не 6?

    polarlord
    @polarlord
    А почему должно быть 6 ? Поменяйте в counter() на return ++currentCount; и будет вам 6.
    Про разницу между формами инкремента читайте тут https://learn.javascript.ru/operators#inkrement-de...
    Ответ написан
  • Как dispatch оказался в props?

    polarlord
    @polarlord
    Потому что в данном примере в connect() не передается mapDispatchToProps() а по-умолчанию его значение это dispatch => ({ dispatch })
    Больше можно почитать в офф. доке https://react-redux.js.org/docs/api#arguments или здесь https://stackoverflow.com/questions/34458261/how-t...
    Ответ написан
  • Как вызвать действие после выполнения всех других?

    polarlord
    @polarlord
    Почитайте в доке описание put. Это не блокирующий эффект. Если вам нужен порядок - используйте putResolve.
    Также у вас первый и второй yield просто триггерят другие саги. Если у этих экшенов нет других side-эффектов - то проще напрямую вызывать эти саги через yield call. Тогда не будет лишних вызовов под капотом и эффект будет такой как вам надо. И в приницпе это - общепринятая практика.
    Ответ написан