当想要爬取的数据由下拉框来选择时,应该如何处理?
页面如下:
目的获得电影的详细信息,包括票房,上映日期等。
代码如下:
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-iprint(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
结果展现: