如何使用Python和Anaconda环境中的Jupyter Notebook,在豆瓣网爬取前50部电影的海报图片,并将它们保存到C盘的'images'文件夹中?若C盘不存在该文件夹,应该如何创建它?同时,请提供详细的步骤和必要的库导入代码示例。
时间: 2025-02-24 19:39:53 浏览: 41
在Python和Anaconda环境中使用Jupyter Notebook从豆瓣网爬取电影海报并保存图片,我们需要使用`requests`, `BeautifulSoup`库来抓取HTML内容,然后解析链接,以及`os`和`urllib.request`库用于下载文件。如果C盘的`images`文件夹不存在,我们可以使用`os.makedirs()`函数来创建。
以下是步骤及代码示例:
1. **安装必要库**(如果你还没有安装,可以在命令行中运行以下命令):
```bash
pip install requests beautifulsoup4
```
2. 导入所需的库:
```python
import os
import requests
from bs4 import BeautifulSoup
import urllib.request
```
3. **检查C盘images文件夹是否存在,如果不存在则创建**:
```python
if not os.path.exists('C:\\images'):
os.makedirs('C:\\images')
```
4. **设置豆瓣电影URL和电影列表的页面数**(假设每页显示20部电影):
```python
url = 'https://movie.douban.com/top250'
start_page = 0 # 开始从第一页抓取
num_pages = 50 / 20 + int(50 % 20 != 0) # 要获取前50部电影,可能需要多一页
```
5. **创建一个函数来处理单页的爬虫任务**:
```python
def get_images_per_page(page):
response = requests.get(url + f'?start={page * 20}')
soup = BeautifulSoup(response.text, 'html.parser')
for movie in soup.find_all('div', class_='hd'):
img_url = movie.find('img', class_='pic').get('src')
img_path = os.path.join('C:\\images', os.path.basename(img_url))
# 下载图片并保存
urllib.request.urlretrieve(img_url, img_path)
```
6. **开始抓取所有电影的图片**:
```python
for page in range(start_page, start_page + num_pages):
print(f"正在抓取第 {page + 1} 页...")
get_images_per_page(page)
print("所有图片已下载完成.")
```
7. **运行脚本**:
最后在Jupyter Notebook中运行上述代码即可。记得按照实际情况修改URL、起始页面和总页面数等信息。
注意:豆瓣网站可能会有反爬策略,频繁请求可能会导致IP被封禁。在实际操作时,请遵守网站的robots.txt协议,并适度延迟请求时间以避免触发限制。此外,网页结构如有变动,可能需要更新解析代码。
阅读全文
相关推荐


















