2013-07-20 1 views
0

Я использую scrapy framework для склеивания Название, цена и спецификация мобильных телефонов с разных сайтов. Я успешно скрепил все данные и сохранил их в базе данных MySQL.Logic, чтобы обновить уже очищенную цену в базе данных

Структура таблицы ID || Product_Url || Имя || Цена || Spec ||

Теперь на следующий день некоторые цены на товары уменьшатся со значения предыдущего дня, которые хранятся в моей базе данных. Я хочу уточнить цену в моей базе данных

В повседневную полночь запускается одна программа python и проверяется, какая из этих позиций будет изменена, и если она будет изменена, она обновит значение.

Я не хочу снова соскабливать все продукты в повседневной жизни. Потому что они очень огромны в nos. Приблизительно 20 000 ссылок

Итак, пожалуйста, ребята, помогите мне с некоторой логикой, которую я должен применять, чтобы мне требовалось только очистить те ссылки на продукты, цены которых были изменены.

+0

Включены ли ссылки на продукты, которые вы очищаете, список обновленных продуктов, чтобы вы могли просто захватить этот список и очистить эти конкретные продукты? –

+0

Нет У него нет списка обновленных продуктов –

+0

Я также ответил incase, если у него нет списка обновленных продуктов. –

ответ

0
  1. Если сайт продукта, что ваше выскабливание имеет страницу, где перечислены ссылки продуктов, которые недавно были обновлены, вы можете скрести этот список, и обновлять эти продукты из списка.

  2. Но если на сайте нет страницы, на которой перечислены продукты, которые были недавно обновлены. Вам может потребоваться очистить все ссылки на продукты, которые ищут обновление в ценах (ну это не лучшее решение, но оно работает). Вы можете ускорить процесс, отправив несколько запросов.

    Это может быть настроено в проекте settings, обновите CONCURRENT_REQUESTS до необходимых подключений, которые вы хотите отправить scrapy.

    Поскольку вы упомянули, что есть прибл. 20 000 ссылок на продукты, вы можете распространять эту задачу соскабливания этих огромных ню. среди работников сельдерея, которые будут работать с пауками-пауками. Вы можете запустить около 4 рабочих, которые будут работать scrapyspider каждый, и соскоблить 5000 ссылок.

Реф. http://doc.scrapy.org/en/latest/topics/settings.html

+0

Если я закрою все ссылки, то как мне обновить одну и ту же таблицу. Потому что будет три случая. Теперь у меня появятся некоторые новые продукты, перечисленные на этой странице, а некоторые цены на продукцию изменены, некоторые цены не изменены. –

+0

вы можете распределите задачу соскабливания между несколькими работниками сельдерея, которые будут запрашивать вашу единую базу данных, и сравнивают скребковое значение с существующим значением и обновляют значения БД. И он также проверит, существует ли скребковый продукт в БД, а если нет, он добавит новую запись для нового продукта. –

+0

Но вам нужно распределить задачу таким образом, чтобы один рабочий обрабатывал только ряд продуктов (вы можете использовать идентификатор продукта в качестве ссылки). Напр. для идентификаторов продуктов (в диапазоне от 1 до 500) работник A будет обновлять записи для этих продуктов. И для идентификаторов продуктов (в диапазоне от 500 до 1000) работник B будет обновлять свои значения. И каждый раз, когда вы сталкиваетесь с записью, которой нет в БД, вам нужно вставить запись для каждого. Поэтому каждый раз перед вставкой записи вы можете запрашивать существующие записи. –

 Смежные вопросы

  • Нет связанных вопросов^_^