代码
使用requests库发送HTTP请求,使用BeautifulSoup解析网站的HTML内容。
以下是代码的详细说明:
- 创建一个空列表
movies
,用于存储电影信息。 - 使用一个循环从网站的页面1到页面11(范围为1到12)遍历。
- 对于每个页面,发送一个GET请求到网站并提取HTML内容。
- 使用BeautifulSoup解析HTML内容,并提取每部电影的信息。
- 从HTML元素中获取电影名称、分类、上映时间、评分、上映地点和时长。
- 将这些信息作为字典附加到
movies
列表中。 - 在抓取所有页面后,从
movies
列表创建一个pandas DataFrame。 - 然后将DataFrame保存到名为
movies_info.csv
的CSV文件中。
import requests
from bs4 import BeautifulSoup
import pandas as pd
movies = [] #创建一个空列表来存储电影信息
# 循环遍历网站的页面,范围是1-11
for start_num in range(1, 12, 1):
#发送GET请求获取页面的内容
response = requests.get(f'https://ssr1.scrape.center/page/{start_num}')
html = response.text
soup = BeautifulSoup(html,"html.parser") #使用beautifulsoup解析HTML内容
# 遍历每部电影信息
for movie in soup.find_all('div', class_='el-card__body'):
#提取电影名称、分类、上映时间、评分、上映地点和时长
a = movie.find('h2', class_='m-b-sm').text #提取电影名称
b = movie.find('div', class_='categories').text #提取电影分类
c = movie.find_all('div', class_='m-v-sm info')[1].text #提取上映时间
d = movie.find('p', class_='score m-t-md m-b-n-sm').text #提取评分
e = movie.find('div', class_='m-v-sm info').find_all('span')[0].text #提取上映地点
f = movie.find('div', class_='m-v-sm info').find_all('span')[2].text #提取电影时长
#将提取的信息存储为字典并添加到movies列表中
movies.append({
'电影名称': a,
'电影分类': b,
'上映时间': c,
'评分': d,
'上映地点': e,
'电影时长': f,
})
# 创建一个pandas DataFrame来存储电影信息
df = pd.DataFrame(movies)
# 将DataFrame保存为CSV文件,不包含索引
df.to_csv('movies_info.csv.csv', index=False)