由于涉及到Web of Science的爬取,需要使用Selenium模块,具体代码如下:

from selenium import webdriver
import docx

#读取文章列表
doc = docx.Document(r'e:\Users\Administrator\Desktop\文章列表.docx')
article_list = []
for para in doc.paragraphs:
    article_list.append(para.text)

#打开Web of Science
driver = webdriver.Chrome(executable_path=r'chromedriver.exe')
driver.get('https://www.webofknowledge.com')

#登录账户
input('请手动登录账户后按回车键继续...')
input('请在搜索框中输入文章标题并按回车键...')
input('请点击左侧“高级搜索”按钮...')
input('请在检索条件中勾选“标题”并输入检索词后按回车键...')

#获取引用情况
cited_nums = []
self_cited_nums = []
other_cited_nums = []
citing_articles = []
for article in article_list:
    #输入文章标题进行搜索
    search_box = driver.find_element_by_id('value(input1)')
    search_box.clear()
    search_box.send_keys(article)
    search_button = driver.find_element_by_class_name('searchButton')
    search_button.click()
    
    #获取引用情况
    try:
        cited_num = driver.find_element_by_css_selector('.snowplow-citedref-times-cited-count-link').text
        cited_nums.append(cited_num)
        self_cited_num = driver.find_element_by_css_selector('.snowplow-citedref-self-cite-count-link').text
        self_cited_nums.append(self_cited_num)
        other_cited_num = driver.find_element_by_css_selector('.snowplow-citedref-related-records-count-link').text
        other_cited_nums.append(other_cited_num)
        citing_article = driver.find_element_by_css_selector('.snowplow-citedref-times-cited-full-record-link').get_attribute('href')
        citing_articles.append(citing_article)
    except:
        cited_nums.append('无相关数据')
        self_cited_nums.append('无相关数据')
        other_cited_nums.append('无相关数据')
        citing_articles.append('无')

#将引用情况和施引文献清单写入新的word中
new_doc = docx.Document()
for i in range(len(article_list)):
    new_doc.add_paragraph('文章标题:' + article_list[i])
    new_doc.add_paragraph('总引用数:' + cited_nums[i])
    new_doc.add_paragraph('自引数:' + self_cited_nums[i])
    new_doc.add_paragraph('他引数:' + other_cited_nums[i])
    new_doc.add_paragraph('施引文献清单:')
    if citing_articles[i] == '无':
        new_doc.add_paragraph('无相关数据')
    else:
        driver.get(citing_articles[i])
        citing_doc = docx.Document()
        for para in driver.find_elements_by_css_selector('.l-column-content div p'):
            citing_doc.add_paragraph(para.text)
        citing_doc.save(article_list[i] + '.docx')
        new_doc.add_paragraph('已保存到本地:' + article_list[i] + '.docx')
        
new_doc.save('引用情况.docx')
print('引用情况已保存到本地:引用情况.docx')

需要注意的是,由于Web of Science的登录和搜索需要手动操作,因此在代码中使用了input函数来引导操作者进行操作。同时,代码中将每篇文章的施引文献清单保存到了本地,并在新的word中进行了展示。

编写一个Python爬虫代码,从e:\Users\Administrator\Desktop的文件名为文章列表.docx的word中读取文章列表,然后从web of science上查询到对应的应用情况,包括自引、他引,并将总引用数,自引数,他引数,文章对应的施引文献清单下载到新的word中

原文地址: https://www.cveoy.top/t/topic/xj6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录