当想要爬取的数据由下拉框来选择时,应该如何处理?
页面如下:
目的获得电影的详细信息,包括票房,上映日期等。
代码如下:
from selenium import webdriver
from selenium.webdriver.support.select import Select # 下拉列表
import time
import parsel
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
url = 'https://www.endata.com.cn/BoxOffice/BO/Year/index.html'
browser.get(url)
sel = browser.find_element_by_xpath('//*[@id="OptionDate"]')
sel_new = Select(sel) # 定位下拉列表
print(sel_new.options) # 获取下拉列表的所有选项
print(len(sel_new.options))
for i in range(len(sel_new.options)): # 根据位置切换下拉框0,1,2,3,4...
sel_new.select_by_index(i)
time.sleep(2)
# 切换完了之后抓数据
i = 2023-i
print(f'以下是第{i}年的电影数据')
title_list = browser.find_elements_by_css_selector('tbody .movie-name a p')
total_list = browser.find_elements_by_css_selector('tbody tr td:nth-child(4)')
year_list = browser.find_elements_by_css_selector('tbody tr td:nth-child(8)')
for title,total,year in zip(title_list,total_list,year_list):
print(title.text,total.text,year.text)
break
结果展现: