参考课件,应用爬虫技术爬取网站https://spa1.scrape.center/中10个页面共100部 电影的所有信息数据。 (1)在指定的文件夹下,根据下载的电影,每部电影的图片要存放在以该电影名为名称的 子文件夹中,根据图片的分类,演员图片要存放在子文件夹中的actors文件夹里,剧情图片应 存放在子文件夹中的contents文件夹里,而电影宣传画图片及导演的照片就存放在子文件夹中。 (2)将从网页中提取的每部电影的电影名称(中文名、英文名),每张图片存放的引用名, 电影分类、电影产地、播放时长、电影上映时间、电影剧情、电影评分、电影导演姓名(注意 有可能有多位导演)、各个演员的姓名(及所扮演的角色)及所有照片(导演及演员的照片应以其 姓名命名)的引用名等信息。写入一个json格式的文件中,保存的文件夹下。
时间: 2023-06-08 10:07:57 浏览: 245
scrape-this:从 Singletracks.com 抓取的信息 - 山地自行车网站
好的,我理解到您想要使用爬虫技术爬取https://spa1.scrape.center/网站上的100部电影的信息,并将数据按照指定的格式存储到本地文件夹中。我将为您提供下面的步骤:
1. 安装必需的Python库
您需要安装以下Python库:
- requests
- beautifulsoup4
您可以使用pip安装它们。在命令行中输入以下命令:
```
pip install requests beautifulsoup4
```
2. 编写爬虫程序和存储程序
您可以使用requests库向https://spa1.scrape.center/网站请求数据,并使用beautifulsoup4库从HTML响应中提取100部电影的信息。然后,您可以将信息按照指定的格式保存到本地文件夹中。
下面是一个示例程序,您需要自行修改以根据要求存储信息到文件夹中。请将这个代码复制到一个Python文件中(program.py),并运行它以爬取和保存数据。
```python
import os
import requests
from bs4 import BeautifulSoup
import json
# 请求页面
url = "https://spa1.scrape.center/"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
# 提取前10页的URL
urls = []
for i in range(10):
urls.append(url + f'/?page={i+1}')
# 提取每个电影的信息
movies = []
for url in urls:
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
for movie in soup.select(".el-card"):
# 提取电影信息
name = movie.select(".name")[0].text
category = movie.select(".category")[0].text.strip()
location = movie.select(".location")[0].text.strip()
cover = movie.select("img")[0].attrs["src"]
detail_url = movie.select(".name > a")[0].attrs["href"]
# 请求电影详情页面
detail_response = requests.get(detail_url)
detail_soup = BeautifulSoup(detail_response.content, "html.parser")
# 提取电影详情信息
score = detail_soup.select(".score")[0].text.strip()
duration = detail_soup.select(".duration")[0].text.strip()
pubdate = detail_soup.select(".pubdate")[0].text.strip()
summary = detail_soup.select(".summary")[0].text.strip()
directors = [
{"name": d.text, "photo": d.attrs["src"]}
for d in detail_soup.select(".director > a > img")
]
actors = [
{
"name": d.select(".name")[0].text,
"role": d.select(".role")[0].text,
"photo": d.select("img")[0].attrs["src"],
}
for d in detail_soup.select(".actor > .el-col")
]
# 存储电影信息到本地
movie = {
"name": name,
"category": category,
"location": location,
"cover": cover,
"score": score,
"duration": duration,
"pubdate": pubdate,
"summary": summary,
"directors": directors,
"actors": actors,
}
movies.append(movie)
# 创建子文件夹
directory = f"./{name}"
if not os.path.exists(directory):
os.makedirs(directory)
if not os.path.exists(f"{directory}/actors"):
os.makedirs(f"{directory}/actors")
if not os.path.exists(f"{directory}/contents"):
os.makedirs(f"{directory}/contents")
# 下载图片
for actor in actors:
actor_name = actor["name"]
actor_photo = actor["photo"]
response = requests.get(actor_photo)
with open(f"{directory}/actors/{actor_name}.jpg", "wb") as f:
f.write(response.content)
for director in directors:
director_name = director["name"]
director_photo = director["photo"]
response = requests.get(director_photo)
with open(f"{directory}/{director_name}.jpg", "wb") as f:
f.write(response.content)
response = requests.get(cover)
with open(f"{directory}/cover.jpg", "wb") as f:
f.write(response.content)
print(f"共爬取了{len(movies)}部电影信息")
# 将电影信息写入json文件
with open("movie.json", "w", encoding="utf-8") as f:
json.dump(movies, f, ensure_ascii=False)
```
3. 运行程序
在命令行中运行以下命令以启动程序:
```
python program.py
```
程序将会执行爬取和保存操作,您将在本地文件夹中看到按照规定存储的数据。
请注意,本程序示例仅供参考,您可以根据需要进行修改。
阅读全文