import requests
from bs4 import BeautifulSoup
import pandas as pd
 
url = "https://www.flipkart.com/search?q=mobile+phone+under+20000&as=on&as-show=on&otracker=AS_Query_OrganicAutoSuggest_3_19_na_na_na&otracker1=AS_Query_OrganicAutoSuggest_3_19_na_na_na&as-pos=3&as-type=RECENT&suggestionId=mobile+phone+under+20000&requestId=52895815-1a4e-46da-8ae2-4f32bfcb941b&as-backfill=on"
 
response = requests.get(url)
 
if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'html.parser')
 
    product_containers = soup.find_all('div', {'class': '_1AtVbE'})
 
    # Create a list to store the data
    data = []
 
    for product in product_containers:
        title_container = product.find('div', {'class': '_4rR01T'})
        price_container = product.find('div', {'class': '_30jeq3 _1_WHN1'})
        rating_container = product.find('div', {'class': '_3LWZlK'})
        specs_container = product.find('ul', {'class': '_1xgFaf'})
        
        link_container = product.find('a', {'class': '_1fQZEK'}, href=True)  # Updated line to find the link
 
        title = title_container.text.strip() if title_container else None
        price = price_container.text.strip() if price_container else None
        rating = rating_container.text.strip() if rating_container else None
        specs = ', '.join([spec.text.strip() for spec in specs_container.find_all('li')]) if specs_container else None
        link = f"https://www.flipkart.com{link_container['href']}" if link_container else None
 
        data.append({
            "Product": title,
            "Price": price,
            "Link": link,
            "Rating": rating,
            "Specs": specs
        })
 
    # Convert the data to a pandas DataFrame
    df = pd.DataFrame(data)
 
    # Write the DataFrame to an Excel file
    df.to_excel("flipkart_mobiles.xlsx", index=False)
 
    print("Data has been exported to flipkart_mobiles.xlsx")
 
else:
    print(f"Failed to retrieve the page. Status code: {response.status_code}"