def parse_movie_card(card): """Extract title, year, genre, and detail URL from a card element.""" link = card.find('a', href=True) detail_url = BASE_URL + link['href'] title_raw = link.find('h2').get_text(strip=True)
def scrape_latest_pages(pages=5, delay=2): """Iterate over the first N pagination pages and return a list of dicts.""" movies = [] for page in range(1, pages + 1): url = f"LIST_URL?page=page" html = fetch_page(url) soup = BeautifulSoup(html, "lxml") cards = soup.find_all('div', class_='movie-box') for card in cards: movies.append(parse_movie_card(card)) Anaconda 2 Filmyzilla
return "title": title, "year": int(year) if year and year.isdigit() else None, "genre": genre, "detail_url": detail_url, def parse_movie_card(card): """Extract title
def fetch_page(url): """Polite request with a small user‑agent and error handling.""" headers = "User-Agent": "Mozilla/5.0 (compatible; FilmDataBot/0.1)" response = requests.get(url, headers=headers, timeout=10) response.raise_for_status() return response.text "lxml") cards = soup.find_all('div'
print(f"✔ Page page → len(cards) movies") time.sleep(delay) # be gentle on the server return movies