当前位置: 智能网 > 人工智能 > 文献批量下载器PyCNKi使用教程

文献批量下载器PyCNKi使用教程

放大字体 缩小字体 发布日期:2021-01-28 12:03:12   浏览次数:88
核心提示:2021年01月28日关于文献批量下载器PyCNKi使用教程的最新消息:PyCNKi下载器使用教程PyCNKi下载器源码(百度链接里有.ipynb格式源码)一、导入库from selenium import webdriverfrom selenium


PyCNKi下载器使用教程

PyCNKi下载器源码

(百度链接里有.ipynb格式源码)

一、导入库

from selenium import webdriverfrom selenium.webdriver import ChromeOptionsfrom selenium.webdriver.chrome.options import Optionsimport openpyxlimport reimport timefrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support.select import Selectimport urllib.error

二、打开知网并进行初始设置

#无可视化界面操作def wu_visual():    chrome_options = Options()    chrome_options.add_argument('--headless')    chrome_options.add_argument('--disable-gpu')    return chrome_options
def fan_jiance():    option = ChromeOptions()    option.add_experimental_option('excludeSwitches', ['enable-automation'])    #option.add_argument('-kiosk')    return optiondef url_error_test(url,bro):    try:        bro.get(url)        print("OK")    except urllib.error.HTTPError as e:        print(e.code)        print(e.reason)    except urllib.error.URLError as e:        print(e.reason)    return e.reason
chrome_options=wu_visual()option=fan_jiance()chrome_path =r'./chromedriver.exe'bro = webdriver.Chrome(executable_path=chrome_path,chrome_options=chrome_options,options=option)
#用火狐的朋友可以把下一行代码的“#”去掉即可#bro = webdriver.Firefox()
bro.maximize_window() #最大化url = r'http://kns.cnki.net' #知网网址bro.get(url)

三、关键词搜索

#模拟输入关键字查询#请选择您需要使用的查询方式,本代码只提供标题查询input_title = bro.find_element_by_id("txt_SearchText")input_title.click()time.sleep(2)key_value = input("请输入你要下载的论文标题:")
input_title.send_keys(key_value)#点击搜索div_search = bro.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/input[2]')div_search.click()time.sleep(1)#点击期刊论文default_1=20bro.find_element_by_xpath("/html/body/div[5]/div[1]/div/ul[1]/li[1]/a/span").click()time.sleep(10)total_num = bro.find_element_by_xpath("/html/body/div[5]/div[1]/div/ul[1]/li[1]/a/em")if int(total_num.text)<=default_1:    print("一共搜索到"+total_num.text+"条结果")    print("共一页")else:    print("一共搜索到" + total_num.text + "条结果")    total_page =bro.find_element_by_xpath('/[@id="gridTable"]/div[2]/span[1]')    print(total_page.text)    num =int(total_page.text[1:-1])

四、选择下载格式及批量下载到几页

print("1:PDF格式2:CAJ格式请输入下载文件的格式对应数字:")load_num = int(input("请输入1 or 2:"))
print("请输入您要下载到第几页码:")

五、开始批量下载

load_page = int(input())while load_page>num or load_page<=0:    print("输入页码错误,请重新输入:")    load_page = int(input("请输入1 or 2:"))bro_new = webdriver.Chrome(executable_path=chrome_path, chrome_options=chrome_options,options=option)if int(total_num.text)<=default_1:    url_link = bro.find_elements_by_xpath('/[@id="gridTable"]/table/tbody/tr/td[2]/a')    for link_1 in url_link:        count=1        link = url + r'/kcms/detail/detail.aspx?' + link_1.get_attribute("href")[20:]        bro_new = webdriver.Chrome(executable_path=chrome_path,chrome_options=chrome_options,options=option)        bro_new.get(link)        bro_new.maximize_window()        # print("编号为"+str(count)+"的论文:"+bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text+"————正在下载")        time.sleep(10)        if bro_new.find_element_by_xpath('/html/body/div[2]/div').text == "URL参数错误":            print("编号为"+str(count)+"的论文:"+bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text+"————论文下载失败")            bro_new.quit()            count += 1            continue        if load_num == 1:            bro_new.find_element_by_id('pdfDown').click()            time.sleep(10)            print("编号为" + str(count) + "的论文:" + bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text + "————下载成功")            count += 1            bro_new.quit()        if load_num == 2:            bro_new.find_element_by_id('cajDown').click()            time.sleep(10)            print("编号为" + str(count) + "的论文:" + bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text + "————下载成功")            count += 1            bro_new.quit()else:    for ii in range(0,load_page):        count=1        url_link = bro.find_elements_by_xpath('/[@id="gridTable"]/table/tbody/tr/td[2]/a')        for link_1 in url_link:            link = url + r'/kcms/detail/detail.aspx?' + link_1.get_attribute("href")[20:]            bro_new = webdriver.Chrome(executable_path=chrome_path,chrome_options=chrome_options,options=option)            bro_new.get(link)            bro_new.maximize_window()            time.sleep(10)            if bro_new.find_element_by_xpath('/html/body/div[2]/div').text == "URL参数错误":                bro_new.quit()                print("编号为" + str(count) + "的论文:" + bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text + "————论文下载失败")                bro_new.quit()                count += 1                continue            if load_num == 1:                bro_new.find_element_by_name('pdfDown').click()                time.sleep(10)                print("编号为" + str(count) + "的论文:" + bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text + "————下载成功")                count += 1                bro_new.quit()            if load_num == 2:                bro_new.find_element_by_name('cajDown').click()                time.sleep(5)                print("编号为" + str(count) + "的论文:" + bro_new.find_element_by_xpath("/html/body/div[2]/div[1]/div[3]/div/div[1]/div[3]/div[1]/h1").text + "————下载成功")                count += 1                bro_new.quit()        bro.find_element_by_xpath('/[@id="PageNext"]').click()        time.sleep(10)


 
关键词: 下载 论文 编号

[ 智能网搜索 ]  [ 打印本文 ]  [ 违规举报

猜你喜欢

 
推荐图文
ITECH直流电源在人工智能领域的应用 基于朴素贝叶斯自动过滤垃圾广告
2020年是人工智能相关业务发展的重要一年 我国人工智能市场规模、行业短板、发展前景一览
推荐智能网
点击排行

 
 
新能源网 | 锂电网 | 智能网 | 环保设备网 | 联系方式