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)