1. Home
  2. Docs
  3. BeautifulSoup
  4. পেজিনেশন লিংক স্ক্রাপ করা

পেজিনেশন লিংক স্ক্রাপ করা

আমাদের ওয়েব পেজটি দেখতে এমন

Write a caption

১. ওয়েবসাইট লিংক

২. পেজিনেশন আছে

৩. মাল্টিপল লিংক ওয়েব পেজ

প্রথমে আমাদের ওয়েবসাইট এ ভিজিট করতে হবে। যতগুলো পেজিনেশন আছে তার মধ্যে যত গুলো লিংক আছে সেগুলো রিকোয়েস্ট দিয়ে ভিজিট করতে হবে। প্রত্যেকটা পেজ স্ক্রাপ করে এক্সপোর্ট করবো।

from bs4 import BeautifulSoup
import requests

# রুট ওয়েবসাইটের URL
root = 'https://subslikescript.com'
website = f'{root}/movies_letter-A'
result = requests.get(website)
soup = BeautifulSoup(result.content, 'html.parser')
# প্রিন্ট(soup)

# পেজিনেশন
pagination = soup.find('ul', class_='pagination')
pages = pagination.find_all('li', class_='page-item')
lastpage = pages[-2].get_text()
print(lastpage)

# প্রতি পৃষ্ঠার জন্য লুপ চালানো
for page in range(1, int(lastpage) + 1)[:2]:
    website = f'{root}/movies_letter-A?page={page}'
    result = requests.get(website)
    soup = BeautifulSoup(result.content, 'html.parser')
    box = soup.find('article', class_="main-article")
    links = []
    
    # প্রতি লিঙ্কের জন্য লুপ চালানো
    for link in box.find_all('a', href=True):
        links.append(link['href'])

    for link in links:
        try:
            website = f'{root}/{link}'
            result = requests.get(website)
            soup = BeautifulSoup(result.content, 'html.parser')
            box = soup.find('article', class_="main-article")
            title = box.find('h1').get_text()
            transcript = box.find('div', class_='full-script').get_text()

            # ফাইল তৈরি এবং লেখা
            with open(f'{title}.txt', 'w', encoding='utf-8') as file:
                file.write(transcript)
        
        except:
            print('--------- লিঙ্ক পাওয়া যায়নি ---------')

পোষ্টের টাইটেল দিয়ে ফাইলের নাম তৈরী করলে অনেক সময় পোষ্টের টাইটেল এ কিছু স্পেশাল অক্ষর থাকে তখন ফাইল তৈরিতে সমস্যা এই এই সমস্যা সমাধানের জন্য টাইটেল কে সেনিটাইজেশন করতে হয়। নিচের মত করবো

import string

def sanitize_file_name(title):
    # অপ্রয়োজনীয় অক্ষরগুলি অপসারণ করতে একটি অনুবাদ টেবিল ডিফাইন করুন
    # আমরা সব অক্ষর-সংখ্যা কর্তৃক রাখব এবং অন্যান্যগুলি আন্ডারস্কোরে পরিণত করব
    allowed_characters = string.ascii_letters + string.digits + ' '  # অক্ষর-সংখ্যা এবং স্থান
    translation_table = str.maketrans('', '', ''.join(c for c in string.printable if c not in allowed_characters))

    # টাইটেল থেকে অপ্রয়োজনীয় অক্ষরগুলি অপসারণ করুন
    sanitized_title = title.translate(translation_table)

    # শীর্ষ এবং দ্রুত কারণে বস্তুগুলি অনুসরণ করে স্থান প্রতিস্থাপন করুন
    sanitized_title = sanitized_title.strip().replace(' ', '_')

    # ফাইল নামের সর্বাধিক দৈর্ঘ্যকে 100 অক্ষরে সীমাবদ্ধ করুন (আপনি এই মানটি সংশোধন করতে পারেন)
    max_length = 100
    sanitized_title = sanitized_title[:max_length]

    return sanitized_title
    
# ফাইল নাম শোধন করুন
sanitized_title = sanitize_file_name(title)

# ফাইল তৈরি করুন এবং লেখা করুন
with open(f"data/a/{sanitized_title}.txt", 'w', encoding='utf-8') as file:
    file.write(transcript)

How can we help?