from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select # 下拉列表 <select>
import time
web = Chrome()
web.get('https://www.endata.com.cn/BoxOffice/BO/Year/index.html')
sel = web.find_element(By.XPATH, '//*[@id="OptionDate"]')
sel_new = Select(sel) # 把sel进行包装,就是一个下拉列表
# print(sel_new.options) # 拿到所有选项
# print(len(sel_new.options)) # 一般都是循环它的长度
# sel_new.select_by_index() # 最常用,根据索引,位置 0 1 切换
# sel_new.deselect_by_value() # 根据 value 的值 切换
# sel_new.select_by_visible_text() # 根据展示的文字切换
for i in range(len(sel_new.options)):
sel_new.select_by_index(i)
time.sleep(3) # 切换完毕等待加载数据
# 切换完了之后,抓数据
trs = web.find_elements(By.XPATH, '//*[@id="TableList"]/table/tbody/tr')
for tr in trs:
print(tr.text)
# 报错信息
# Message: stale element reference: element is not attached to the page document
# 解决办法 time.sleep(3) 切换完毕等待加载数据 太快了