四、选择检索方式并传入关键词检索
# 修改属性,使下拉框显示出来
opt = driver.find_element(By.CSS_SELECTOR, 'div.sort-list') # 定位元素
# 执行 js 脚本进行属性的修改;arguments[0]代表第一个属性
driver.execute_script("arguments[0].setAttribute('style', 'display: block;')", opt)
# 鼠标移动到下拉框中的[通讯作者]
ActionChains(driver).move_to_element(driver.find_element(By.CSS_SELECTOR, 'li[data-val="RP"]')).perform()
# 找到相应选项并点击
kw = input("请输入检索方式代码:") # 关键字KY,作者AU,主题SU,篇关摘TKA,篇名TI
keyword = input("请输入检索词(关键字、作者、主题、篇名等:")
WebDriverWait(driver, 100).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, f'li[data-val= {kw}]'))).click()
# 传入关键字
WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '''//*[@id="gradetxt"]/dd[1]/div[2]/input'''))).send_keys(keyword)
# 找到检索按钮并单击它
search_button = driver.find_element(By.CLASS_NAME, "btn-search").click()
五、提取检索结果
# 获取总文献数和页数
res_num = WebDriverWait(driver, 100).until(EC.presence_of_element_located(
(By.XPATH, "/html/body/div[2]/div[2]/div[2]/div[2]/div/div[1]/div/div[1]/span[1]/em"))).text
# 去除千分位里的逗号
res_num = int(res_num.replace(",", ''))
page_num = int(res_num / 20) + 1 # 默认每页显示20条
print(f"共找到 {res_num} 条结果, {page_num} 页。")
六、修改每页检索结果显示(由默认20项改为50项)
# 修改每页显示数为50 OK
search_shuzi = driver.find_element(By.ID, 'perPageDiv')
search_shuzi.click() # 点击默认的20
WebDriverWait(driver, 100).until(
EC.visibility_of_element_located((By.CSS_SELECTOR,'li[data-val="50"]'))).click() # 移动并点击重选的50'''