diff --git a/Arjun Parasar/Chatbot/chatbot.py b/Arjun Parasar/Chatbot/chatbot.py
new file mode 100644
index 0000000..0b91448
--- /dev/null
+++ b/Arjun Parasar/Chatbot/chatbot.py	
@@ -0,0 +1,31 @@
+import nltk
+from nltk.chat.util import Chat, reflections
+
+pairs = [
+    ['hi|hello|hey', ['Hello!', 'Hi there!', 'Hey!']],
+    ['how are you?', ['I am doing well, thank you!', 'I am good, thanks for asking!']],
+    ['what is your name?', ['I am just a chatbot.', 'I am a chatbot designed to assist you.']],
+    ['what can you do?', ['I can provide information on various topics. Feel free to ask me anything!']],
+    ['bye|goodbye', ['Goodbye!', 'Bye! Have a great day!']],
+    ['(.*) weather (.*)', ['Sorry, I cannot provide weather information at the moment.']],
+    ['(.*) news (.*)', ['I am not able to provide news updates right now.']],
+    ['(.*) time (.*)', ['Sorry, I cannot provide time information currently.']]
+]
+
+chat = Chat(pairs, reflections)
+
+def chat_respond(user_input):
+    return chat.respond(user_input)
+
+def main():
+    print("Hello! I'm a simple chatbot.")
+    
+    while True:
+        user_input = input("You : ")
+        response = chat_respond(user_input)
+        print("Bot:",response)
+        if user_input.lower() == 'bye':
+            break
+        
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/Arjun Parasar/Weather App/weather_app.py b/Arjun Parasar/Weather App/weather_app.py
new file mode 100644
index 0000000..e3b3655
--- /dev/null
+++ b/Arjun Parasar/Weather App/weather_app.py	
@@ -0,0 +1,94 @@
+import requests
+import matplotlib.pyplot as plt
+import datetime
+
+# Function to fetch current weather data from Open-Meteo API
+def fetch_weather_data(lat, lon):
+    current_weather_url = f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lon}&current_weather=true'
+    forecast_url = f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lon}&hourly=temperature_2m&daily=temperature_2m_max,temperature_2m_min&timezone=auto'
+    
+    current_weather_response = requests.get(current_weather_url)
+    current_weather_response.raise_for_status()  # Raise an exception for HTTP errors
+    
+    forecast_response = requests.get(forecast_url)
+    forecast_response.raise_for_status()  # Raise an exception for HTTP errors
+    
+    return current_weather_response.json(), forecast_response.json()
+
+# Function to display current weather data
+def display_current_weather(weather_data):
+    current_weather = weather_data['current_weather']
+    print("Current weather:")
+    print(f"Temperature: {current_weather['temperature']}°C")
+    print(f"Windspeed: {current_weather['windspeed']} km/h")
+    print(f"Wind direction: {current_weather['winddirection']}°")
+    print()
+
+# Function to display forecast data
+def display_forecast(forecast_data):
+    daily_forecast = forecast_data['daily']
+    dates = daily_forecast['time']
+    max_temps = daily_forecast['temperature_2m_max']
+    min_temps = daily_forecast['temperature_2m_min']
+    
+    print("5-day forecast:")
+    for date, max_temp, min_temp in zip(dates, max_temps, min_temps):
+        print(f"{date}: Max Temp: {max_temp}°C, Min Temp: {min_temp}°C")
+    print()
+
+# Function to parse datetime with optional seconds
+def parse_datetime(date_str):
+    for fmt in ('%Y-%m-%dT%H:%M:%S', '%Y-%m-%dT%H:%M'):
+        try:
+            return datetime.datetime.strptime(date_str, fmt)
+        except ValueError:
+            continue
+    raise ValueError(f"Date format for '{date_str}' not recognized")
+
+# Function to plot temperature trends
+def plot_temperature_trends(forecast_data):
+    hourly_forecast = forecast_data['hourly']
+    times = hourly_forecast['time']
+    temperatures = hourly_forecast['temperature_2m']
+    
+    dates = [parse_datetime(time) for time in times]
+    
+    plt.figure(figsize=(10, 5))
+    plt.plot(dates, temperatures, marker='o')
+    plt.title('Temperature Trends')
+    plt.xlabel('Date')
+    plt.ylabel('Temperature (°C)')
+    plt.grid(True)
+    plt.show()
+
+# Function to get latitude and longitude from user input
+def get_location_coordinates(location):
+    geocoding_url = f'https://geocoding-api.open-meteo.com/v1/search?name={location}'
+    response = requests.get(geocoding_url)
+    response.raise_for_status()  # Raise an exception for HTTP errors
+    
+    data = response.json()
+    if data['results']:
+        return data['results'][0]['latitude'], data['results'][0]['longitude']
+    else:
+        raise ValueError("Location not found")
+
+# Main function to fetch and display weather data
+def main():
+    location = input("Enter the location (e.g., London): ")
+    try:
+        lat, lon = get_location_coordinates(location)
+        current_weather, forecast = fetch_weather_data(lat, lon)
+        
+        display_current_weather(current_weather)
+        display_forecast(forecast)
+        plot_temperature_trends(forecast)
+    except requests.exceptions.HTTPError as http_err:
+        print(f"HTTP error occurred: {http_err}")
+    except ValueError as val_err:
+        print(f"Error: {val_err}")
+    except Exception as err:
+        print(f"An error occurred: {err}")
+
+if __name__ == "__main__":
+    main()
diff --git a/Arjun Parasar/pdf_spliter/pdf_spliter.py b/Arjun Parasar/pdf_spliter/pdf_spliter.py
new file mode 100644
index 0000000..fb480c2
--- /dev/null
+++ b/Arjun Parasar/pdf_spliter/pdf_spliter.py	
@@ -0,0 +1,24 @@
+from PyPDF2 import PdfReader, PdfWriter
+import os
+
+def split_pdf(input_pdf_path, output_folder):
+    pdf_reader = PdfReader(input_pdf_path)
+    
+    for page_num in range(len(pdf_reader.pages)):
+        pdf_writer = PdfWriter()
+        pdf_writer.add_page(pdf_reader.pages[page_num])
+        
+        output_pdf_path = os.path.join(output_folder, f'page_{page_num + 1}.pdf')
+        
+        with open(output_pdf_path, 'wb') as out:
+            pdf_writer.write(out)
+            print(f'Page {page_num + 1} saved to {output_pdf_path}')
+
+def main():
+    input_path = input("Enter the path of the PDF file to split: ").strip()
+    output_folder = input("Enter the output folder path: ").strip()
+    
+    split_pdf(input_path, output_folder)
+
+if __name__ == "__main__":
+    main()
diff --git a/Arjun Parasar/web scraper/web_scraper.py b/Arjun Parasar/web scraper/web_scraper.py
new file mode 100644
index 0000000..f4dc7ab
--- /dev/null
+++ b/Arjun Parasar/web scraper/web_scraper.py	
@@ -0,0 +1,46 @@
+import requests
+from bs4 import BeautifulSoup
+import pandas as pd
+
+# Define the URL of the website to scrape
+url = "http://books.toscrape.com/"
+
+# Send a GET request to the website
+response = requests.get(url)
+
+# Check if the request was successful
+if response.status_code == 200:
+    # Parse the HTML content using BeautifulSoup
+    soup = BeautifulSoup(response.content, 'html.parser')
+    
+    # Find the container with the list of books
+    books_container = soup.find_all('article', class_='product_pod')
+    
+    # Create lists to store the data
+    titles = []
+    prices = []
+    availability = []
+
+    # Loop through the container and extract data
+    for book in books_container:
+        title = book.h3.a['title']
+        price = book.find('p', class_='price_color').text
+        availability_status = book.find('p', class_='instock availability').text.strip()
+        
+        titles.append(title)
+        prices.append(price)
+        availability.append(availability_status)
+
+    # Create a DataFrame using pandas
+    books_df = pd.DataFrame({
+        'Title': titles,
+        'Price': prices,
+        'Availability': availability
+    })
+    
+    # Save the DataFrame to a CSV file
+    books_df.to_csv('books.csv', index=False)
+    
+    print("Data has been successfully scraped and saved to books.csv")
+else:
+    print(f"Failed to retrieve the webpage. Status code: {response.status_code}")
