Índice

  1. Ambiente de desenvolvimento
  1. Modelo de produto - MongoDB
  2. Arquitetura do projeto
  3. Como rodar extração de links
  4. Como rodar extração de dados
  5. Como rodar exportar o DB
  6. OFF-Topic

  • sudo apt-get install git
  • sudo apt-get install build-essential checkinstall
  • sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
  • cd ~/Downloads
  • wget http://python.org/ftp/python/2.7.12/Python-2.7.12.tgz
  • tar -xvf Python-2.7.12.tgz
  • cd Python-2.7.5
  • ./configure
  • make
  • sudo checkinstall
  • pip install -r requirements.txt
  • sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

  • Ubuntu 16.04

    • echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
  • sudo apt-get update

  • sudo apt-get install -y mongodb-org

  • Confira se o arquivo existe: sudo ls /lib/systemd/system/mongod.service

  • Senão, crie um:

    • sudo vi /lib/systemd/system/mongod.service
    • Pressione a tecla 'i'
    • Cole o seguinte texto dentro do arquivo: [Unit] Description=High-performance, schema-free document-oriented database After=network.target Documentation=https://docs.mongodb.org/manual

    [Service] User=mongodb Group=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

    [Install] WantedBy=multi-user.target

  • Rode o banco: sudo service mongod start

  • Importe o arquivo mongo.json que está na pasta principal do projeto:

    • mongoimport --db price_watch --collection products --file mongo.json

{
  _id: (BSON object) número de identificação criado pelo próprio mongo,
  available: (true/false) disponibilidade do produto,
  brand: (String) marca do produto,
  color: (String) cor majoritária do produto
  display_feature: (Array de Strings) tipos de tela (LCD/LED, Touch, 3D, etc),
  display_size: (String) tamanho de tela,
  graphics_processor_name: (String) nome da placa de vídeo,
  graphics_processor: (String) capacidade da placa de vídeo com indicação de unidade(GB, MB, etc),
  name: (String) título do produto,
  operating_system: (String) _Windows/MacOS/Linux com a versão e distribuição caso aplicável,
  price: (Float) preço do produto,
  processor: (String) processador,
  ram_memory: (String) memória ram com indicação de unidade (GB, MB etc),
  sku: (String) número de identificação do produto na página
  screen_resolution: (String) 1366x768 por exemplo,
  storage: (String) HD com indicação de unidade (TB, GB, MB, etc),
  storage_type: (String) HD/SSD se disponível,
  url: (String) url para a página do produto,
  image_url: (String) url para a imagem principal do produto
}

  • App: contém projeto em si
    • models: diretório contendo as classes do projeto
      • cada loja possui uma pasta com seu nome contendo um arquivo de scraper para obter os links dos produtos e um para extrair os dados
  • log: arquivos de log gerados, caso necessários
  • settings: arquivos de configuração
  • tests: arquivos de testes

  • Entre na pasta da loja desejada
  • No terminal digite scrapy runspider <nome_loja>.py -t json -o - > list_links.json
  • A lista de links será gerada dentro do arquivo links_list.json na mesma pasta da loja
  • Faça as devidas validações para guardar somente links válidos (notebooks disponíveis ou não)

  • Entre na pasta app
  • No terminal digite python <nome_loja>.py

  • Entre na pasta onde você quer criar o arquivo de exportação
  • No terminal digite mongoexport --db price_watch --collection products --out nome_do_arquivo.json

git pull origin master -> atualiza o código local git status -> mostra as mudanças git add <nome_do_arquivo> / --all -> adiciona arquivos para serem comitados git commit -m "" -> comita as mudanças locais git push origin master -> publica mudanças no repositório

Sugestão de editor textos: