ssr1 介绍: 电影数据网站,无反爬,数据通过服务端渲染,适合基本爬虫练习。

0x00 网站分析

打开开发者工具,刷新网页搜索需要抓取的信息。 可以看到是服务端直接渲染到 html 中,拉取网页源代码即可完成爬取。

0x01 定位请求

切换到第二页,请求为https://ssr1.scrape.center/page/2
则可以确定切换页面的方法为最后添加页码,围绕该逻辑可以爬取所有数据。

0x02 爬虫构建

import requests
from bs4 import BeautifulSoup
 
# 基础 URL
base_url = 'https://ssr2.scrape.center/page/{}'
 
def get_movie_data(page):
	url = base_url.format(page)
	response = requests.get(url)
	soup = BeautifulSoup(response.text, 'html.parser')
	
	# 提取每部电影的数据
	movies = soup.find_all('div', class_='el-card item m-t is-hover-shadow')
	for movie in movies:
		name = movie.find('a', class_='name').get_text(strip=True)
		categories = [button.get_text(strip=True) for button in movie.find_all('button', class_='category')]
		info = movie.find_all('div', class_='m-v-sm info')
		country_duration = info[0].get_text(strip=True).split('/')
		country = country_duration[0].strip()
		duration = country_duration[1].strip() if len(country_duration) > 1 else ''
		release_date = info[1].get_text(strip=True)
		
		print('名称:', name)
		print('类别:', ', '.join(categories))
		print('国家/地区:', country)
		print('时长:', duration)
		print('上映日期:', release_date)
		print('-' * 50)
 
 
# 遍历第1页到第11页
for page in range(1, 12):
	print(f'第 {page} 页的电影数据:')
	get_movie_data(page)