爬取豆瓣前250部电影图片并保存用selenium方法Python 代码
时间: 2024-11-27 17:11:32 浏览: 18
在Python中使用Selenium库爬取豆瓣电影Top250的图片,并保存到本地,首先需要安装必要的库,如`webdriver_manager`, `selenium`, 和 `requests`。以下是一个简单的示例代码,它假设你已经下载了ChromeDriver:
```python
from selenium import webdriver
import os
from webdriver_manager.chrome import ChromeDriverManager
# 定义URL和图片保存路径
base_url = 'https://movie.douban.com/top250'
image_dir = 'douban_movie_images'
if not os.path.exists(image_dir):
os.makedirs(image_dir)
def get_image(url, save_path):
# 创建一个新的浏览器实例
driver = webdriver.Chrome(ChromeDriverManager().install())
try:
driver.get(url)
img_tag = driver.find_element_by_xpath('//img[@class="cover"]') # 查找电影海报元素
image_url = img_tag.get_attribute('src') # 获取图片链接
response = requests.get(image_url, stream=True) # 使用requests获取图片
with open(save_path, 'wb') as f:
for chunk in response.iter_content(1024): # 分块写入文件,防止内存溢出
if chunk:
f.write(chunk)
print(f"Image saved to {save_path}")
finally:
driver.quit() # 关闭浏览器
# 遍历第一页的电影图片链接
for i in range(1, 26):
movie_url = f"{base_url}?start={i*24}"
image_name = f'douban_movie_{i}.jpg' # 图片命名规则,你可以自定义
save_path = os.path.join(image_dir, image_name)
get_image(movie_url, save_path)
# 如果你想爬取更多页面,可以修改循环条件,例如start参数每次增加24(因为每页显示24部电影)
```
这个脚本会爬取首页的前250部电影图片,如果电影列表超过250条,你需要递归地更新`start`参数继续爬取。
阅读全文