python爬虫实现自动获取论文GB 7714引用

在写中文论文、本硕博毕业设计的时候要求非常严格的引用格式——GB 7714引用。对于普通学生来说都是在google scholar上获取,一个一个输入点击很麻烦,就想使用python完成这个自动化流程,实现批量的倒入论文标题,导出引用。

正常引用方法

一般获取GB 7714引用的方法分三步:

step1:打开Google Scholar在输入框中写入论文标题

step2:点击目标论文下方引用

step3:复制引用

这就是获取GB7714引用的方法,但是一个一个点击太慢,所以打算用python爬虫实现这个任务的自动化。

自动流程实现

环境准备

整个流程只需要两个库,直接使用pip安装就可以了:

pip install selenium beautifulsoup4

使用selenium库来模拟浏览器行为,beautifulsoup4库来解析HTML内容。

浏览器驱动准备

除了上面两个库,还需要安装你的浏览器对应的webdriver,这里以chromedriver (for Chrome)举例。 下载后,请确保将chromedriver放在你的系统PATH环境变量中,或者在代码中指定chromedriver的路径。安装chromedriver步骤:

step1:在浏览器地址栏输入chrome://version/

可以直接看到版本号,比如我的就是126.0.6478.126版本

step2:查找对应版本的驱动

官方网址:https://developer.chrome.com/docs/chromedriver/downloads?hl=zh-cn#current_releases

但是页面中没有对应的版本

 往下翻有一个警告,点击 JSON 端点就会进入一个json格式的网页,点击ctrl+f输入chrome浏览器版本进行查找

就会查找到不同系统对应的chromedriver下载地址,复制地址到浏览器中就可以进行下载。接下来就是将chromedriver添加到环境变量中,win系统是UI界面添加非常方便,linux系统则需要通过几个命令实现添加:

sudo nano /etc/environment

打开环境变量文件,就会出现诸如 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"这样的,接着就是在这个后面添加上下载的chromedriver地址就可以。

添加过后需要激活一下:

source /etc/environment

Python爬虫

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import timedef collect_scholar_info(article_titles):"""从Google Scholar收集文章信息。Args:article_title: 文章标题Returns:一个字典,包含文章信息,或者None如果找不到文章或发生错误。"""article_results = []for article_title in article_titles:options = webdriver.ChromeOptions()# options.add_argument('--headless') # 可选:无头模式,不打开浏览器窗口driver = webdriver.Chrome(options=options) # 替换为你的chromedriver路径,如果不在PATH中driver.get("https://xueshu.aigrogu.com/")search_box = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "q")))search_box.send_keys(article_title)search_box.submit()# 等待搜索结果加载 (时间可能需要调整)time.sleep(3)page_source = driver.page_source# 使用 BeautifulSoup 解析页面soup = BeautifulSoup(page_source, 'html.parser')# 在这里编写代码来提取你需要的信息results = soup.find_all('div', class_='gs_ri')first_result = Nonefor result in results:title = result.find('h3', class_='gs_rt').textlink = result.find('a')['href']first_result = {'title': title, 'link': link}cite_button = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.gs_or_cit.gs_or_btn.gs_nph")))cite_button.click()# 等待引用窗口出现并提取信息 (需要根据实际情况调整)time.sleep(2) # 等待引用窗口加载new_page_source = driver.page_sourcenew_soup = BeautifulSoup(new_page_source, 'html.parser')time.sleep(2) # 等待引用窗口加载gb_citation = new_soup.select_one('#gs_citt > table > tbody > tr:nth-child(1) > td:nth-child(2) > div').textfirst_result['citation_GBT'] = gb_citation.strip() if gb_citation else "未能找到GB/T 7714引用"breakarticle_results.append(first_result)# 关闭浏览器driver.quit()return article_results

上面实现的是一个抓取函数,输入是多个paper的title,输出是爬取结果的一个list。引文GoogleScholar在多次访问后会出现人机验证,所以就是用一个镜像网站代替:

谷谷学术搜索_谷歌学术搜索_Google 学术搜索

最后输出的结果类似如下:

[{'title': 'Planning-oriented autonomous driving', 'link': 'http://openaccess.thecvf.com/content/CVPR2023/html/Hu_Planning-Oriented_Autonomous_Driving_CVPR_2023_paper.html', 'citation_GBT': 'Hu Y, Yang J, Chen L, et al. Planning-oriented autonomous driving[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 17853-17862.'}, {'title': 'DeepPhos: prediction of protein phosphorylation sites with deep learning', 'link': 'https://academic.oup.com/bioinformatics/article-abstract/35/16/2766/5270665', 'citation_GBT': 'Luo F, Wang M, Liu Y, et al. DeepPhos: prediction of protein phosphorylation sites with deep learning[J]. Bioinformatics, 2019, 35(16): 2766-2773.'}, {'title': '\n[HTML][HTML] A protocol of using PTMiner for quality control and localization of protein modifications identified by open or closed search of tandem mass spectra\n', 'link': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10166509/', 'citation_GBT': 'Cheng Z, Song G, Fu Y. A protocol of using PTMiner for quality control and localization of protein modifications identified by open or closed search of tandem mass spectra[J]. Biophysics Reports, 2022, 8(5-6): 269.'}, {'title': 'A Survey of Multimodal Large Language Model from A Data-centric Perspective', 'link': 'https://arxiv.org/abs/2405.16640', 'citation_GBT': 'Bai T, Liang H, Wan B, et al. A Survey of Multimodal Large Language Model from A Data-centric Perspective[J]. arXiv preprint arXiv:2405.16640, 2024.'}]

以下我这里设置输出的还有文章的链接还有标题,如果不需要可以后续处理中删掉只保留想要的东西,甚至可以格式化输出,方便复制粘贴到论文中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/191.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

redis v6.0.16 安装 基于Ubuntu 22.04

redis安装 基于Ubuntu 22.04 本文演示如何在ubuntu22.04下,安装redis v6.0.16,并配置测试远程访问。 Step1 更新环境 sudo apt updateStep2 安装redis sudo apt install redis-server -yStep3 启动 sudo systemctl restart redissudo systemctl sta…

✨基于python实现的文档管理系统✨

本项目是使用Django和layui实现的一个文档转换系统,支持各种文档的相互转换 📄 PPT转Word 📑 PDF转Word 📚 合并PDF 📜 Word转PDF 系统支持用户注册、登录,还能管理你的转换任务: 🔄…

ES索引:索引管理

索引管理 再讲索引(Index)前,我们先对照下 ElasticSearch Vs 关系型数据库: PUT /customer/_doc/1 {"name": "DLBOY" }系统默认是自动创建索引的 如果我们需要对这个建立索引的过程做更多的控制&#xff1a…

Linux安装Dcoker

目录 1、卸载(可选) 2、安装docker 3、启动docker 4、配置镜像加速 1、卸载(可选) 如果之前安装过旧版本的Docker,可以使用下面命令卸载: yum remove docker \docker-client \docker-client-latest \…

智能无损网络技术详解

什么是智能无损网络? 智能无损网络是一种集流量控制与拥塞控制于一体的先进技术,旨在提升网络性能,降低时延。同时,它通过智能无损存储网络等技术实现网络和应用系统的优化融合。该技术为AI人工智能、集中式/分布式存储以及HPC等应…

基于SSM+小程序的购物管理系统1

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的购物管理系统1,可以实现首页、个人中心、商品分类管理、商品信息管理、特价商品管理、用户管理、留言板管理、系统管理、订单管理等功能。方便用户对首页、商品…

楼梯区域分割系统:Web效果惊艳

楼梯区域分割系统源码&数据集分享 [yolov8-seg-FocalModulation&yolov8-seg-GFPN等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al l…

ROS2入门学习——ROS在机器人中的运行

一、入门级基础平台TurtleBot TurtleBot 是 ROS 中重要且资源丰富的机器人之一,特别适合入门级机器人爱好者提供基础平台。用户可以直接利用其自带的软硬件,专注于应用程序的开发。TurtleBot 随着 ROS 的发展,一直处于开发前沿。 TurtleBot…

智谱发布AI助理,帮人类敲响AGI的大门

人工智能之父John McCarthy曾说:“只要AI可以开始正常工作,就不会有人再把它当AI了。”如今,这一预言正在逐渐变为现实。 10月25日,智谱AI推出了自主智能体AutoGLM,能够模拟人类操作手机,执行各种任务。 …

Profinet、Ethernet/IP 工业以太网无线通信解决方案

在工业现场,我们常常会面临这样的困扰:两个PLC之间、PLC 跟远程IO之间或者PLC 跟伺服之间由于种种原因不方便布线,严重影响了通讯效率和生产进程。为了解决这一难题,三格电子设计了一款工业以太网无线网桥,这款无线网桥…

重塑未来,开源AI数字人系统引领个性化语音新纪元!AigcPanel v0.03开启公测

你是否曾梦想拥有一个能够与你对话、与你共鸣的AI数字人伙伴?现在,这一切都不再是幻想!我们自豪地推出——全新的开源AI数字人系统,一个集视频合成、声音合成、声音克隆与模型管理于一体的创新平台,让你轻松打造专属的…

js逆向-模拟加密

实战七麦数据: 1.寻找加密入口 尝试搜索的方法: 那只能使用跟栈的方法,进入send发包位置: 打上断点,寻找加密入口,前面是发包分包,promise注意到是一个异步操作,看是否在此加密&…

Kafka社区KIP-500中文译文(去除ZooKeeper)

原文链接:KIP-500: Replace ZooKeeper with a Self-Managed Metadata Quorum - Apache Kafka - Apache Software Foundation 译者:关于Kafka3.x版本最大的一个变化即是解除了对ZooKeeper的依赖,而本文的作者是大神Colin,他高屋建瓴…

【计算机网络教程】课程 章节测试1 计算机网络概述

一. 单选题(共16题) 1 【单选题】以下关于TCP/IP参考模型缺点的描述中,错误的是( )。 A、在服务、接口与协议的区别上不很清楚 B、网络接口层本身并不是实际的一层 C、它不能区分数据链路和物理层 D、传输层对…

(蓝桥杯C/C++)——常用库函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、 二分查找 1.二分查找的前提 2.binary_ search函数 3.lower_bound和upper_bound 二、排序 1.sort概念 2.sort的用法 3.自定义比较函数 三、全排列 1.next p…

软考:24年上半年选择题

软件测试的目的是降低风险,无法100%的证明被测对象的正确性。 数字孪生: EAI企业应用集成: 线性回归技术: 嵌入式系统实时特性: 计算机信息安全:最安全的是访问验证保护级,最不安全的是用…

【Linux】从零开始使用多路转接IO --- poll

碌碌无为,则余生太长; 欲有所为,则人生苦短。 --- 中岛敦 《山月记》--- 从零开始使用多路转接IO 1 前言1 poll接口介绍3 代码编写4 总结 1 前言 上一篇文章我们学习了多路转接中的Select,其操作很简单,但有一些缺…

系统架构设计师-未来信息综合技术(2)

一、机器人技术 森政弘与合田周平提出的:“机器人是一种具有移动性、个体性、智能性、通用性、半机械半人性、自动性、奴隶性等7个特征的柔性机器。” 从这一定义出发,森政弘又提出了用自动性、智能性、个体性、半机械半人性、通用性、移动性、信息性、柔性、有限性…

知识吾爱纯净版小程序系统 leibiao SQL注入漏洞复现(XVE-2024-30663)

0x01 产品简介 知识吾爱纯净版小程序系统是一款基于微信小程序平台开发的知识付费应用,旨在帮助用户快速建立自己的知识付费平台,实现支付变现和流量主收益。它提供了简洁明了的用户界面和良好的用户体验,同时注重用户隐私保护,确保用户信息的安全存储和传输。 0x02 漏洞…

CocoaPods安装步骤详解 - 2024

引言 CocoaPods的安装,如果有VPN就一直开启,会让整个流程非常顺畅。 在现代 iOS 开发中,依赖管理变得越来越重要,CocoaPods 成为开发者们首选的依赖管理工具。它不仅可以简化库的安装与更新,还能帮助开发者更高效地管…