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

১. ওয়েবসাইট লিংক
২. পেজিনেশন আছে
৩. মাল্টিপল লিংক ওয়েব পেজ
প্রথমে আমাদের ওয়েবসাইট এ ভিজিট করতে হবে। যতগুলো পেজিনেশন আছে তার মধ্যে যত গুলো লিংক আছে সেগুলো রিকোয়েস্ট দিয়ে ভিজিট করতে হবে। প্রত্যেকটা পেজ স্ক্রাপ করে এক্সপোর্ট করবো।
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)