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

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

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

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

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

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

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

from bs4 import BeautifulSoup
import requests
root = 'https://subslikescript.com'
website = f'{root}/movies_letter-A'
result =requests.get(website)
soup = BeautifulSoup(result.content,'html.parser')
# print(soup)

# pagination
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('--------- Link Not Found---------')

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

import string

def sanitize_file_name(title):
    # Define a translation table to remove unwanted characters
    # We will keep all alphanumeric characters and spaces and replace others with underscores
    allowed_characters = string.ascii_letters + string.digits + ' '  # Alphanumeric characters and spaces
    translation_table = str.maketrans('', '', ''.join(c for c in string.printable if c not in allowed_characters))

    # Remove unwanted characters from the title
    sanitized_title = title.translate(translation_table)

    # Remove leading and trailing whitespaces and replace spaces with underscores
    sanitized_title = sanitized_title.strip().replace(' ', '_')

    # Limit the maximum length of the file name to 100 characters (you can adjust this value)
    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?