Итак, я работаю над веб-приложением python, это поисковая система для спортивных товаров (спортивные наряды, инструменты ... и т. Д.). В основном он должен искать заданное ключевое слово в нескольких магазинах и сравнивать результаты, чтобы вернуть 20 лучших результатов.Каков наиболее эффективный способ извлечения данных в этом случае?
Я думал, что лучший и простой способ сделать это - написать файл json, в котором содержатся правила скрепера о том, как извлекать данные на каждом веб-сайте. Например, для:
[{"www.decathlon.com" : { "rules" : { "productTag" : "div['.product']",
"priceTag" : "span[".price"]" } }]
Так что для десятиборья, чтобы получить товар, мы ищем теги div с классом продукта.
У меня есть список около 10 - 15 сайтов для царапин. Поэтому для каждого веб-сайта он переходит к rules.json, см. Соответствующие правила и использует их для извлечения данных.
Pros для этого метода: Очень легко писать, нам необходимо минимальное питон скрипт для логики о том, как читать и карту URLs к их правилам и извлекать данные через BeautifulSoup + Это также очень легко добавить, удалить новые URL-адреса и их правила.
Недостатки этого метода: Для каждого поиска мы запускаем запрос на каждый веб-сайт, поэтому одновременно делаем около 10 запросов, а затем сравниваем результаты, поэтому, если 20 пользователей будут искать одновременно, у нас будет около 200 запросы, которые замедлят наше приложение!
Другой метод:
Я думал, что мы могли бы иметь огромный список ключевых слов, а затем в 00:00, запуск сценария запросов на все адреса для каждого ключевого слова в списке, сравнить их, то сохраните результаты в CouchDB, который будет использоваться через день, и он будет обновляться ежедневно. Единственная проблема с этим методом заключается в том, что почти невозможно иметь список всех возможных ключевых слов.
Так что, пожалуйста, помогите мне в том, как я должен продолжить это? Учитывая, что у меня мало времени.