python用简单的selenium爬虫爬去豆瓣电影豆瓣电影排行榜前250部电影的电影名称 导演 主演 年份 国别 类别 评分 评价人数
时间: 2024-04-21 18:16:22 浏览: 11
好的,以下是代码实现:
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
# 设置 ChromeDriver 路径
driver_path = 'chromedriver.exe'
# 初始化 ChromeDriver
driver = webdriver.Chrome(executable_path=driver_path)
# 打开豆瓣电影排行榜页面
driver.get('https://movie.douban.com/chart')
# 获取所有电影条目
movie_items = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.XPATH, '//div[@class="pl2"]'))
)
# 遍历电影条目,获取电影信息
for i, item in enumerate(movie_items[:250]):
print(f'#{i+1}')
# 获取电影名称
movie_name = item.find_element_by_tag_name('a').text
print(f'电影名称:{movie_name}')
# 进入电影详情页
item.find_element_by_tag_name('a').click()
# 获取电影信息
try:
# 获取导演、主演、年份、国别、类别、评分、评价人数
director = driver.find_element_by_xpath('//span[contains(text(),"导演")]/following-sibling::span[1]').text
actors = driver.find_element_by_xpath('//span[contains(text(),"主演")]/following-sibling::span[1]').text
year = driver.find_element_by_xpath('//span[contains(text(),"年份")]/following-sibling::span[1]').text
country = driver.find_element_by_xpath('//span[contains(text(),"制片国家")]/following-sibling::span[1]').text
genre = driver.find_element_by_xpath('//span[contains(text(),"类型")]/following-sibling::span[1]').text
rating = driver.find_element_by_xpath('//strong[contains(@class,"rating_num")][1]')\
.get_attribute('textContent')
rating_num = driver.find_element_by_xpath('//span[contains(@class,"rating_num")][1]')\
.get_attribute('textContent')
# 打印电影信息
print(f'导演:{director}')
print(f'主演:{actors}')
print(f'年份:{year}')
print(f'国别:{country}')
print(f'类别:{genre}')
print(f'评分:{rating}')
print(f'评价人数:{rating_num}')
except:
print('获取电影信息失败')
# 返回电影排行榜页面
driver.back()
# 刷新电影条目列表
movie_items = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.XPATH, '//div[@class="pl2"]'))
)
# 关闭浏览器
driver.quit()
```
需要注意的是,在获取导演、主演、年份、国别、类别、评分和评价人数时,需要使用 `get_attribute('textContent')` 来获取元素的文本内容。此外,由于豆瓣电影详情页获取电影信息的方式比较特殊,需要通过点击电影条目进入详情页,再返回电影排行榜页面,刷新电影条目列表的方式来实现遍历所有电影信息的目的。