In [ ]:
import os
import sys
from django.utils import timezone
sys.path.append('/home/ubuntu/anodos.ru/anodos/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'anodos.settings'
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
import re
import catalog.runner
from catalog.models import *
class Runner(catalog.runner.Runner):
name = 'Comptek'
alias = 'comptek'
url = {
'start' : 'http://comptek.ru/',
'login' : 'http://comptek.ru/personal/auth.xhtml',
'price' : 'http://comptek.ru/',
'filter' : 'catalog/',
'unfilter' : 'item/',
'base' : 'http://comptek.ru'}
def __init__(self):
super().__init__()
self.stock = self.take_stock('stock', 'склад', 3, 10)
self.transit = self.take_stock('transit', 'транзит', 10, 60)
self.on_order = self.take_stock('on-order', 'на заказ', 40, 80)
self.count = {'product': 0, 'party': 0}
def run(self):
import time
payload = {
'login' : self.updater.login,
'password' : self.updater.password}
if self.login(payload):
print('Авторизован.')
else:
print('Не удалось авторизоваться')
return False
# Заходим на начальную страницу каталога
tree = self.load_html(self.url['price'])
# TODO Проходим по всем ссылкам
urls = []
for u in tree.xpath('//a/@href'):
if self.url['base'] not in u:
u = self.url['base'] + urls[i]
if u not in urls:
urls.append(u)
i = 0
while i < len(urls):
# Сслыка на категорию
if self.url['filter'] in urls[i]:
print('Загружаю:', urls[i])
vendor = Vendor.objects.get_by_key(updater = self.updater, key = url.split('/')[4])
print('Vendor: {}.'.format(vendor))
if vendor:
tree = self.load_html(url)
print("Загружена: {}.".format(url))
for u in tree.xpath('//a/@href'):
if not u in urls:
urls.append(u)
# Парсим таблицу с товарами
# self.parse(tree, vendor)
# Ждем, чтобы не получить отбой сервера
time.sleep(1)
else:
print("Пропущена: {}.".format(url))
else:
url = self.url['base'] + urls[i]
print("Пропущена: {}.".format(url))
i += 1
# Чистим партии
Party.objects.clear(stock = self.stock, time = self.start_time)
Party.objects.clear(stock = self.transit, time = self.start_time)
Party.objects.clear(stock = self.on_order, time = self.start_time)
self.log()
s = Runner()
In [ ]:
s.run()