搞科研的小伙伴总是会被期刊严苛的引用文献格式搞的很头疼。虽然常用的文献软件可以一键导出BibTex,但由于很多论文在投稿之前都会先发上Arxiv占坑,软件就很可能会把文献引出为来自Arxiv。我用的是Zotero,就有这个毛病。

  因此,如果是IEEE的期刊,最好是直接去IEEE官网搜索并导出引用,否则可以使用谷歌学术。为了减少重复性的动作,我使用selenium来帮我完成这些操作。Selenium是Python的一个爬虫包,具体可以看:Python Selenium库的使用。

  在此之前,需要安装的有:

  1、谷歌浏览器。也可以用别的浏览器,具体看上面的Selenium教程。

  2、Selenium控制谷歌浏览器的驱动。网址

  3、配置驱动的环境变量,就是把驱动解压的位置放到PATH里。感觉可有可无,因为代码中还是会用到驱动的位置。

  下面是Python代码,具体操作就是先从IEEE官网找,如果找不到再去谷歌学术找。需要具体配置的地方已在代码中注释:

#%% 从IEEE与谷歌学术爬取论文引用
from selenium import webdriver
from urllib import parse
from time import sleepclass GetBibs():def __init__(self, driver_path, option_path, ie_search_url, gg_search_url) -> None:self.ie_search_url = ie_search_urlself.gg_search_url = gg_search_url# 启用带插件的浏览器option = webdriver.ChromeOptions()option.add_argument("--user-data-dir="+option_path)self.browser = webdriver.Chrome(executable_path = driver_path, options = option)   # 打开chrome浏览器self.browser.set_window_size(800,800) #不要随意修改,太窄会导致按钮的隐藏,模拟点击失效def get_bib_from_IEEE(self, paper_title):strto_pn=parse.quote(paper_title)url = self.ie_search_url + strto_pnself.browser.get(url)  compare_title = ''.join(list(filter(str.isalnum, paper_title))).lower()    #等待词条加载for i in range(100):try:elements=self.browser.find_elements_by_css_selector("[class='List-results-items']")elements[0].get_attribute('id')breakexcept:sleep(0.1)#扫描所有词条,是否存在所需文献paper_url = r'https://ieeexplore.ieee.org/document/'for i in elements:s_title = i.text.split('\n')[0]s_title = ''.join(list(filter(str.isalnum, s_title))).lower()if s_title == compare_title:paper_url += i.get_attribute('id')breakif paper_url == r'https://ieeexplore.ieee.org/document/': #没找到return ''# 进入文献页面self.browser.get(paper_url) # 等待加载bib按钮     for i in range(100):try:element=self.browser.find_element_by_css_selector("[class='layout-btn-white cite-this-btn']")element.click()breakexcept:sleep(0.1)# 点击bibtexfor i in range(100):try:element=self.browser.find_element_by_css_selector("[class='modal-dialog']")element=element.find_elements_by_css_selector("[class='document-tab-link']")[1]element.click()breakexcept:sleep(0.1) for i in range(100):try:    self.browser.find_element_by_css_selector("[class='text ris-text']")breakexcept:sleep(0.1) sleep(2)bib = self.browser.find_element_by_css_selector("[class='text ris-text']").textreturn bib def get_bib_from_google_scholar(self, paper_title):strto_pn=parse.quote(paper_title)url = self.gg_search_url + strto_pnself.browser.get(url)      #等待词条加载for i in range(100):try:element=self.browser.find_element_by_css_selector("[class='gs_r gs_or gs_scl']")element=element.find_element_by_css_selector("[class='gs_fl']")element=element.find_element_by_css_selector("[class='gs_or_cit gs_nph']")element.click()breakexcept:sleep(0.1)for i in range(100):try:element=self.browser.find_element_by_id("gs_citi")element=element.find_element_by_css_selector("[class='gs_citi']")element.click()breakexcept:sleep(0.1)for i in range(100):try:bib = self.browser.find_element_by_tag_name('pre').textbreakexcept:sleep(0.1)return bibdef get_bib(self, paper_title):bib = self.get_bib_from_IEEE(paper_title)if bib != '':return "IEEE", bibreturn "Google", self.get_bib_from_google_scholar(paper_title) driver_path = r'C:/chromedriver/chromedriver' # 浏览器驱动位置
option_path = r"C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/" # 使浏览器能用你自定义的设置,否则Selenium创建的浏览器对象是默认设置,一些插件就不能用了
ie_search_url = r'https://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=' # 在执行代码之前,先打开IEEE官网的搜索页面,把类似的网址复制到这里,等号=后面就是一会儿要搜索的内容
gg_search_url = r'https://scholar.google.com/scholar?hl=zh-CN&as_sdt=0%2C5&inst=1597255436240989024&q=' # 谷歌学术也是一样
get_bibs = GetBibs(driver_path, option_path, ie_search_url, gg_search_url)
#%% **********************以上定义爬虫对象,以下开始爬取*******************************
paper_titles = { # 要爬取的论文,key用于标记,value是论文题目。下面是一些样例"ESPCN":'Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network',"Sparse_Coding":'Image Super-Resolution Via Sparse Representation',"ESRGAN":'ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks',"EnhanceNet":'EnhanceNet: Single Image Super-Resolution Through Automated Texture Synthesis','Meta-SR': 'Meta-SR: A Magnification-Arbitrary Network for Super-Resolution','SAN': 'Second-Order Attention Network for Single Image Super-Resolution',
}for k in paper_titles.keys():source, bib = get_bibs.get_bib(paper_titles[k]) print(source+":",k)print(bib)print()

  IEEE与谷歌学术可能需要VPN,在爬之前要先做好准备。另外IEEE还需要登录机构账号,在此之前也要先登录好。

使用Selenium从IEEE与谷歌学术批量爬取BibTex文献引用相关推荐

  1. 利用谷歌学术搜索生成规范的文献引用

    最近在写毕业论文,自然免不了引用文献,但是引用方法比较复杂,比如会议时是[C].期刊是[J]等等,我真心分不清,最好有一个工具可以帮助自动生成引用方法. 今天早上师兄教了我一个好办法,不敢私藏,赶快和 ...

  2. 谷歌学术+SCI-HUB一键下载SCI文献

    谷歌学术+SCI-HUB一键下载SCI文献 公众号后台回复[万能侠],免费获得该软件最高版 小编经过广泛收集,提供7个谷歌学术有效网址,3个SCIHUB实时更新,永久有效网址 Google 学术搜索提 ...

  3. 利用自定义函数实现批量爬取多家公司的新闻

    1 需求 利用自定义函数实现批量爬取多家公司的新闻. 2 代码实现 from selenium import webdriver import redef dongfang(company):chro ...

  4. 批量爬取巨潮资讯网中“贵州茅台”相关公告的PDF文件。

    1 需求 批量爬取巨潮资讯网中"贵州茅台"相关公告的PDF文件. 2 代码实现 import reimport requests from selenium import webd ...

  5. python自动搜索爬取下载文件-python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  6. python爬取抖音用户数据_python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  7. json spr路驾驶技术视频api_每天弄个小爬取之Python爬取批量爬取B站小视频

    1. 批量爬取B站小视频 哔哩哔哩网站(英文名称: bilibili),是年轻人的文化社区,被粉丝们亲切的称为B站.该网站中拥有动画.番剧.国创.音乐.舞蹈.游戏.科技.生活.鬼畜.娱乐.时尚等多个内 ...

  8. Python每日一练(9)-批量爬取B站小视频

    目录 1. 批量爬取B站小视频 2. 获取动态请求的JSON数据 3. 随机生成浏览器的头部信息 4. 获取要下载视频的大小 5. 实时打印文件下载进度 1. 批量爬取B站小视频 哔哩哔哩网站(英文名 ...

  9. 【 批量爬取下载geo.datav.aliyun.com下地图的json文 】

    批量爬取下载geo.datav.aliyun.com下地图的json文件,存放到本地 - 简书

最新文章

  1. 笔记本电脑显卡cuda_准大学生必看~千万别乱买,建议不同专业选择不同款式的笔记本电脑!...
  2. pfSense2.32端口转发设置
  3. PAT甲级1124 Raffle for Weibo Followers :[C++题解]哈希表、微博转发抽奖
  4. 话里话外:信息整合之障
  5. Sales and Distribution (SD)
  6. win 8 共享连接数是多少_局域网IP限速怎么配置,限速多少比较合适
  7. Linux内核邮件列表发送和回复格式研究
  8. 软件测试 白盒测试是否为闰年,对【判断闰年】函数的白盒测试
  9. VS安装包注册com组件
  10. 中国网络视频前景 表面云淡风轻实在暗潮汹涌
  11. Jsp四种变量作用范围
  12. 2012年秋季,斯皮维大厅音乐会的亮点
  13. html编辑器怎么设置为excel,excel2013宏编辑器的设置方法教程
  14. Oracle期末复习1
  15. 投票小程序制作开发有哪些步骤?投票小程序开发有哪些功能?
  16. 转载一篇RC电路分类
  17. 科技热点周刊|马斯克套现 440 亿;苹果推出数字身份证;Meta 与微软合作;华为捐赠欧拉
  18. Django 使用技巧之 settings 拆分 + 通过指令选择不同的配置文件。
  19. MySQL数据库服务的简单开启和关闭
  20. E-office OA 平行越权漏洞复现

热门文章

  1. 软件测试——前言介绍
  2. Elasticsearch-好文推荐
  3. POE供电 网线 电源 网络情况图
  4. 关于我的英文名字Byron
  5. mysql大于号小于号写法
  6. 水气表下行通信规约 188 V1.0 版协议
  7. DBMS_SQL的使用
  8. windows搭建redis java简易访问客户端
  9. kaggle经典题--“泰坦尼克号”--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告)
  10. DBeaver,一款数据库管理工具