1. Home
  2. Docs
  3. BeautifulSoup
  4. Single Page Scrape

Single Page Scrape

আগে আমরা প্রজেক্ট বানিয়েছিলাম এবার মডেল বানিয়ে বাকি কাজগুলো করবো

myapp/models.py

from django.db import models

class ScrapedData(models.Model):
    title = models.CharField(max_length=255,default="")
    description = models.TextField(default="")

    def __str__(self):
        return self.title

Migrate Database

python manage.py makemigrations
python manage.py migrate

myapp/views.py

from django.shortcuts import render
from django.http import HttpResponse

from .models import ScrapedData
import requests
from bs4 import BeautifulSoup

# Create your views here.

def scrape_and_save(request):
    # URL ডিফাইন করুন
    url = "https://subslikescript.com/movie/Titanic-120338"
    
    # URL এর ডাটা নিতে HTTP রিকুয়েস্ট পাঠান
    response = requests.get(url)
    
    # যদি সার্ভার কোড ২০০ (সাক্সেস) হয়, তাদের সাথে কাজ করা যাবে
    if response.status_code == 200:
        # HTML কনটেন্ট থেকে প্রস্তুত করুন
        soup = BeautifulSoup(response.content, 'html.parser')
        
        # 'article' এলিমেন্ট খুজুন যা 'main-article' ক্লাস থাকবে
        article_element = soup.find('article', class_='main-article')
        
        # যদি 'article' এলিমেন্ট পাওয়া যায়
        if article_element:
            # 'h1' এলিমেন্ট থেকে টাইটেল খুজুন এবং ফরম্যাট করুন
            title_element = article_element.find('h1').text.strip()
            
            # 'p' এলিমেন্ট থেকে ডেসক্রিপশন খুজুন এবং ফরম্যাট করুন
            description_element = article_element.find("p", class_='plot').text.strip()
            
            # ScrapedData মডেলে টাইটেলের উপরে নির্ভর করে মুভি অবজেক্ট তৈরি করুন
            # যদি ইতিমধ্যে থাকে, তাদের সাথে কাজ করুন বা নতুন তৈরি করুন
            movie, created = ScrapedData.objects.get_or_create(title=title_element, defaults={'description': description_element})
            
            # সফলভাবে স্ক্র্যাপ করে সংরক্ষণ হয়েছে এবং প্রতিক্রিয়া পাঠান
            return HttpResponse(f"Scraped and saved: {movie.title}")

    # সাইটটি স্ক্র্যাপ করতে ব্যর্থ হলে একটি প্রতিক্রিয়া পাঠান
    return HttpResponse("Failed to scrape the website.")

myapp/urls.py

from django.urls import path
from .views import scrape_and_save

urlpatterns = [
        path('scrape/', scrape_and_save, name='scrape_and_save'),

]

How can we help?