用selenium爬取知网信息(二)

四、选择检索方式并传入关键词检索

# 修改属性,使下拉框显示出来
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'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值