最先开始记得要安装软件包,如果是虚拟环境下有【.venv】的文件夹建立的项目,就要去终端,快捷键【Alt+F12】去下载安装包
pip install selenium webdriver-manager pandas openpyxl pillow requests
安装好之后这是完整的代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
import time
# 初始化Selenium驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# 访问网页
url = 'https://movie.douban.com/chart'
driver.get(url)
# 使用XPath提取数据
# 找到所有电影条目
elements = driver.find_elements(By.XPATH, '//*[@id="content"]/div/div[1]/div/div/table')
# 创建一个列表来存储电影信息
data = []
count=0 #在前面计数0打印出来方便看数字
for element in elements:
# 提取电影标题
标题 = element.find_element(By.XPATH, './/tr/td[2]/div/a').text
# 提取电影简介
简介 = element.find_element(By.XPATH, './/tr/td[2]/div/p').text
# 提取电影评分
评分 = element.find_element(By.XPATH, './/tr/td[2]/div/div').text
# 点击进入电影详情页面
element.find_element(By.XPATH, './/tr/td[2]/div/a').click()
count = count + 1
# 等待页面加载
time.sleep(0)
try:
# 提取上映时间
上映时间 = driver.find_element(By.XPATH, '//*[@id="info"]/span[@property="v:initialReleaseDate"]').text
主演 = driver.find_element(By.XPATH, '//*[@id="info"]/span[3]/span[2]').text
剧情 = driver.find_element(By.XPATH, '//*[@id="link-report-intra"]/span').text
except:
上映时间 = "未找到上映时间"
print(count,标题,评分,上映时间,主演,剧情)
# 添加到数据列表
data.append([标题, 评分, 上映时间,主演, 简介,剧情])
# 返回主页面
driver.back()
# 等待页面加载
time.sleep(0)
# 关闭浏览器
driver.quit()
# 使用pandas保存到Excel表格
df = pd.DataFrame(data, columns=['标题', '评分' , '上映时间','主演','简介','剧情'])
# 保存到Excel文件
df.to_excel('豆瓣新片榜.xlsx', index=False)
print("数据已保存到豆瓣新片榜.xlsx")
爬取最后的效果图