编写一个Python爬虫代码,从e:\Users\Administrator\Desktop的文件名为文章列表.docx的word中读取文章列表,然后从web of science上查询到对应的应用情况,包括自引、他引,并将总引用数,自引数,他引数,文章对应的施引文献清单下载到新的word中
由于涉及到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中进行了展示。
原文地址: https://www.cveoy.top/t/topic/xj6 著作权归作者所有。请勿转载和采集!