[Scrapy] Парсер объявлений о продаже часов с единственного сайта

Задание закрыто
Статус рабочей области:
Стоимость:Договорная
Срок выполнения:14 дней
Варианты оплаты:Планируется использовать Безопасную сделку
Дата публикации:2024-12-31 14:52
Обновлено:2025-01-03 16:39
Был на сайте:2025-04-20 13:10

[Scrapy] Парсер объявлений о продаже часов с единственного сайта

 
Задача

1. Цель проекта
На данном этапе создается базовый инструмент для сбора и обновления данных, который станет основой для агрегатора объявлений о продаже часов.

2. Постановка задачи
Необходимо разработать парсер для автоматического сбора данных из объявлений о продаже часов с сайта. Ссылка на сайт и детальная постановка задачи находятся в приложенном документе. Парсер должен сохранять данные в базу данных в сыром виде и обновлять их при повторном парсинге. На текущем этапе нормализация данных не требуется.

3. Отклик
Безопасная сделка. Готов ответить на любые доп. вопросы по задаче. Готов к корректировкам в постановке, если что-либо кажется неоптимальным. В отклике прошу указать желаемые сроки и стоимость работ.

4. Ожидаемый результат
Заказчик предоставляет:
+ Сервер и рут учетную запись
+ Доступ к репозиторию кода

Исполнитель должен предоставить:
4.1 Настроенный сервер с установленной и настроенной инфраструктурой (операционная система, учетные записи, фаервол, СУБД).
4.2 Систему парсинга, к...

Видеть полную информацию и оставлять заявки могут только авторизованные пользователи.
 Denis
Основная специализация: ИТ и Разработка
    Пишите, обсудим более детально по проекту. По задаче поменял бы на MySql на Postgresql для масштабируемости на будущее.
    Выполню по вашему требованию, сделаю и отвечу на все ваши вопросы
    Роман Митюшин
    Основная специализация: Веб-разработка и Продуктовый дизайн
      timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
      )
      ''')
      conn.commit()
      return conn

      # Функция для парсинга данных с указанного URL
      def parse_watches(url):
      response = requests.get(url)
      response.raise_for_status() # Проверка на ошибки при запросе
      soup = BeautifulSoup(response.text, 'html.parser')

      watches = []
      for item in soup.select('.watch-item'): # Замените на реальный селектор
      title = item.select_one('.watch-title').text.strip() # Замените на реальный селектор
      price = item.select_one('.watch-price').text.strip() # Замените на реальный селектор
      link = item.select_one('a')['href'] # Замените на реальный селектор
      watches.append((title, price, link))

      return watches

      # Функция для сохранения данных в базу
      def save_to_database(conn, watches):
      cursor = conn.cursor()
      for watch in watches:
      cursor.execute('''
      INSERT INTO watches (title, price, link)
      VALUES (?, ?, ?)
      ON CONFLICT(link) DO UPDATE SET
      title=excluded.title,
      price=excluded.price,
      timestamp=CURRENT_TIMESTAMP
      ''', watch)
      conn.commit()

      # Основная функция для запуска парсера
      def main():
      url = 'https://example.com/watches' # Замените на ваш URL
      conn = create_database()

      while True:
      watches = parse_watches(url)
      save_to_database(conn, watches)
      print(f'Parsed and saved {len(watches)} watches.')
      13:30 01.01.25
      # Функция для создания базы данных и таблицы
      def create_database():
      conn = sqlite3.connect('watches.db')
      cursor = conn.cursor()
      cursor.execute('''
      CREATE TABLE IF NOT EXISTS watches (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      title TEXT,
      price TEXT,
      link TEXT,
      timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
      )
      ''')
      conn.commit()
      return conn

      # Функция для парсинга данных с указанного URL
      def parse_watches(url):
      response = requests.get(url)
      response.raise_for_status() # Проверка на ошибки при запросе
      soup = BeautifulSoup(response.text, 'html.parser')

      watches = []
      for item in soup.select('.watch-item'): # Замените на реальный селектор
      title = item.select_one('.watch-title').text.strip() # Замените на реальный селектор
      price = item.select_one('.watch-price').text.strip() # Замените на реальный селектор
      link = item.select_one('a')['href'] # Замените на реальный селектор
      watches.append((title, price, link))

      return watches

      # Функция для сохранения данных в базу
      def save_to_database(conn, watches):
      cursor = conn.cursor()
      for watch in watches:
      cursor.execute('''
      INSERT INTO watches (title, price, link)
      VALUES (?, ?, ?)
      ON CONFLICT(link) DO UPDATE SET
      title=excluded.title,
      price=excluded.price,
      timestamp=CURRENT_TIMESTAMP
      ''', watch)
      conn.commit()

      # Основная функция для запуска парсера
      def main():
      url = 'https://example.com/watches' # Замените на ваш URL
      conn = create_database()
      Аслан
      Основная специализация: Веб-разработка и Продуктовый дизайн
      Добрый день, Дмитрий! Могу помочь, опыта в парсинге много, отзывы за некоторые из моих работ есть в профиле. Всё перечисленное без проблем реализую, если актуально - напишите пожалуйста в телеграм https://t.me/amiralvtk потому что отсюда уведомления не приходят.
      сделаю и настрою все без проблем

      телеграм @web_meow_production
      Готов сделать.
      Окончательная цена после обсуждения деталей.
      Для оперативной связи пишите в ТГ:@Kazanskaya16
      Доброго времени суток!
      Готов обсудить Ваш проект.
      Есть большой опыт в написании телеграм ботов, сайтов и парсеров, работой с ИИ ChatGPT. Окончательные сроки и стоимость обсудим в чате или тг, как удобнее.

      Примеры выполненных работ можете увидеть тут: https://t.me/pro_ficient_python_projects

      Также мой аккаунт на другой бирже где есть отзывы:
      https://kwork.ru/user/dimagolosov

      Для удобства можем связаться вы тг: https://t.me/pro_ficient_python
      Пишите в тг inferna1ity
      Уверен, смогу реализовать вашу задачу любыми доступными методами
      Есть опыт работы с парсингом, как раз на python. Работа не сложная, больше объ?мная (в части настройки системы) поэтому цена 10000?, но готов к торгу. Расчёт настройки сервера, скажите, нужно будет работать напрямую, физически, с сервером? Или по удал?нному подключению?
      Добрый день. Пишите в ТГ. Обсудим условия

      Оставлять заявки могут только авторизованные пользователи.