Я новичок в Джанго.Я создаю веб-приложение.(приведенный ниже код удаляет данные из флипкарта каждый раз, когда я открываю свой локальный сервер. Если объект уже существует, он обновляется с новой ценой, в противном случае он создает новый объект). Я записал логику удаления в * 1001.*
views.py
from django.shortcuts import render
from bs4 import BeautifulSoup as soup
import requests
import re
from .models import Information
def basicScrap(request):
def main():
url_list = ["https://www.flipkart.com/signoraware-best-steel-lunch-box"\
"-blue-500ml-350ml-200ml-tumbler-370ml-3-containers-box/p/itm"\
"fedq3gcpfutwv?pid=LBXFED4W8HSF9SPD&otracker=wishlist&lid=LST"\
"LBXFED4W8HSF9SPD8EFHDU&fm=organic&iid=24db7969-8ff2-4574-8550"\
"-dfed03f05549.LBXFED4W8HSF9SPD.PRODUCTSUMMARY&ppt=hp&ppn=hp&s"\
"sid=hm69tsuogg0000001569056937359"]
url_list.append("https://www.flipkart.com/u-s-polo-assn-slim-men-blue-"\
"jeans/p/itmfey33jmhsgyhe?pid=JEAFEY33Q4XTYEPR&otracker=wishli"\
"st&lid=LSTJEAFEY33Q4XTYEPRSEAI4Q&fm=organic&iid=759c7ef2-212e"\
"-46c7-8c1c-274e8baf0df8.JEAFEY33Q4XTYEPR.PRODUCTSUMMARY&ppt=h"\
"p&ppn=hp&ssid=amn7veuw9s0000001569408699594")
url_list.append("https://www.flipkart.com/himalaya-anti-hair-fall-sham"\
"poo/p/itmf3xfxdmywkwhs?pid=SMPEUHHFZYBXXHGB&lid=LSTSMPEUHHFZY"\
"BXXHGBNMGARX&marketplace=FLIPKART&sattr[]=quantity&st=quantity")
for my_url in url_list:
"""Iterating through each url"""
uClient = requests.get(my_url)
if uClient.status_code == 200:
page_html = uClient.text
page_soup = soup(page_html, "html.parser")
containers = page_soup.find("div", {"class": "_1HmYoV _35HD7C col-8-12"})
name = containers.find("span", {"class": "_35KyD6"})
pName = name.text
price = containers.find("div", {"class": "_1vC4OE _3qQ9m1"})
boxPrice = price.text.strip()
pPrice = int(''.join(filter(str.isdigit, boxPrice)))
get_name = Information.objects.filter(productName=pName)
"""If data not in the record then it'll create new object otherwise it'll update the
existing object with new price"""
if get_name.count()==0:
information_instance = Information.objects.create(
productName=pName, productPrice=pPrice,
minPrice=minPrice)
else:
minPrice = get_name[0].minPrice
if minPrice > pPrice:
minPrice=pPrice
information_instance = Information.objects.filter(productName=pName).update(
productPrice=pPrice,
minPrice=minPrice)
else:
print('Not Found.')
main()
return render(request, 'coreapp/index.html')
И мои models.py
следующие:
from django.db import models
class Information(models.Model):
productName = models.CharField(max_length=128, unique=True)
productPrice = models.IntegerField(default=1)
minPrice = models.IntegerField(default=1)
Я знаю, что не написал код эффективным способом.Может кто-нибудь объяснить, как лучше написать мой приведенный выше код Django?