标签(空格分隔): IEEE Xplore, bash
测试环境:Ubuntu 15.04, 中山大学
首先,从下载一篇论文开始,在IEEE Xplore上任意下载一篇论文,获取下载链接, 如:
http://ieeexplore.ieee.org/ielx7/6875427/6877223/06877226.pdf?tp=&arnumber=6877226&isnumber=6877223
截取?前面部分:
http://ieeexplore.ieee.org/ielx7/6875427/6877223/06877226.pdf
然后,Linux上使用wget命令可以快速地从指定URL下载文件(后面也是使用这个命令来实现批量下载),
一篇论文就这么下载了,所以,要实现批量下载,必须要获取所有论文的下载URL,其实,多下载几篇论文比较下它们的下载链接就可以发现:
http://ieeexplore.ieee.org/ielx7/6875427/6877223/06877326.pdf?tp=&arnumber=6877326&isnumber=6877223
http://ieeexplore.ieee.org/ielx7/6875427/6877223/06877325.pdf?tp=&arnumber=6877325&isnumber=6877223
http://ieeexplore.ieee.org/ielx7/6875427/6877223/06877324.pdf?tp=&arnumber=6877324&isnumber=6877223
下载链接的格式如下,(前两串数字即“6875427”和“6877223”对于同一个会议都是相同的,所以只需要获取一次就可以了):
http://ieeexplore.ieee.org/ielx7/6875427/6877223/0{arnumber}.pdf
所以,可以将下载链接分为两个部分, 注意arnumber前面有多了一个0:
http://ieeexplore.ieee.org/ielx7/6875427/6877223/ 和 0{arnumber}.pdf
问题就变成,如何获取所有论文的arnumber了,这个方法就有两种,一种可以使用爬虫,解析网页获取,但是写代码来比较麻烦,这里使用另外一种,IEEE Xplore提供了一个Download Citations的功能,如图:
下载后保存至文件,
Thangavel, M.; Chandrasekaran, M.; Madheswaran, M., "Analysis of B-mode transverse ultrasound common carotid artery images using contour tracking by particle filtering technique," in Devices, Circuits and Systems (ICDCS), 2012 International Conference on , vol., no., pp.470-473, 15-16 March 2012
doi: 10.1109/ICDCSyst.2012.6188759
keywords: {biodiffusion;biomedical ultrasonics;blood vessels;cardiovascular system;diseases;filters;image denoising;image segmentation;medical image processing;particle filtering (numerical methods);speckle;ultrasonic imaging;B-mode transverse ultrasound common carotid artery images;atherosclerosis;cardiovascular diseases;contour tracking;edge preserving anisotropic diffusion filter;image segmentation;medical image analysis;particle filtering technique;speckle noises;speckle reduction;Fitting;Image segmentation;Image Segmentation;Medical imaging;Particle filtering;Ultrasound image},
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6188759&isnumber=6188639
其中包含了每一篇论文的信息,包括标题(可以用来文件命名),关键字,URL等信息,其中的URL并不能直接用来wget下载论文,但是包含了我们要获取的arnumber信息,好了~接下来要做的就是从这些信息里面抽取arnumber和论文标题了
观察下载后的Citations信息,发现论文标题都包含在双引号之间,即“”标题””这样,arnumber即“arnumber=6188759”,那就用正则表达式来匹配吧,看命令:
cat {citations file} | grep -o -e "arnumber=[0-9]*" -e '"[^\"]*"' >> "{save file}"
实现了从刚才下载的索引文件里抽取出论文标题和arnumber信息,并保存至另外一个文件的功能,其中有两个正则表达式, 分别用来匹配arnumber和论文标题,得到的信息如下:
"Algorithm Engineering for Scalable Parallel External Sorting,"
arnumber=6012805
"Power-Aware Replica Placement and Update Strategies in Tree Networks,"
arnumber=6012820
"Minimum Cost Resource Allocation for Meeting Job Requirements,"
arnumber=6012821
每两行代表一篇论文的标题和arnumber,然后就好办了,进行Shell编程, 循环读取以上的信息,使用arnumber去下载,然后用论文标题作为文件名保存,那么,如何读取呢~
#!/bin/bash
base="http://ieeexplore.ieee.org/ielx7/6875427/6877223/"
file="文件名.txt"
while read -r title; read -r arnumber
do
title=`echo $title | cut -d "\"" -f 2 | cut -d "," -f 1 | sed 's/\///'` #获取title
arnumber=`echo $arnumber | cut -d "=" -f 2` #获取arnumber
wget "$base/0$arnumber.pdf" #下载
mv "0$arnumber.pdf" "$title.pdf" #用标题来作为文件名保存
done < "$file"
保存为download.sh, 给予它执行的权限:
sudo chmod +x download.sh
然后./download.sh就可以运行了,等待程序运行完就ok了~
上面还用到了两个命令, cut 主要用来截取部分字符串, sed用来去除标题中的斜杠,因为斜杠不能出现在文件名中~具体用法不说了
亲测,ICDCS 2012, IPDPS 2012-2015 可用~
附上我的完整程序:
#!/bin/bash
base=
file=
tempfile1="downlist.txt" #临时文件,用完删除
tempfile2="urls.txt" #临时文件,用完删除
if [ -f $tempfile1 ]; then
rm $tempfile1
fi
if [ -f $tempfile2 ]; then
rm $tempfile2
fi
usage()
{
echo "Usage: `basename $0` -b url_base_string -f input_file [-h help]"
exit 1
}
while getopts "b:f:h" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
b)
base=$OPTARG
;;
f)
file=$OPTARG
;;
h)
usage
;;
?) #当有不认识的选项的时候arg为?
echo "unkonw argument"
exit 1
;;
esac
done
if [ -z "$base" ]; then #该脚本必须提供-b选项
echo "You must specify base with -b option"
exit
fi
if [ -z "$file" ]; then #该脚本必须提供-f选项
echo "You must specify file with -f option"
exit
fi
cat $file | grep -o -e "arnumber=[0-9]*" -e '"[^\"]*"' >> "$tempfile1"
while read -r title; read -r arnumber #循环读取标题和arnumber
do
title=`echo $title | cut -d "\"" -f 2 | cut -d "," -f 1 | sed 's/\///'`
arnumber=`echo $arnumber | cut -d "=" -f 2`
echo "$base/0$arnumber.pdf" >> "$tempfile2" #这里先生成所有下载链接,然后保存到临时文件
done < "$tempfile1"
wget -i $tempfile2 #批量下载论文
echo $?
while read -r title; read -r arnumber #重命名
do
title=`echo $title | cut -d "\"" -f 2 | cut -d "," -f 1 | sed 's/\///'`
arnumber=`echo $arnumber | cut -d "=" -f 2`
mv "0$arnumber.pdf" "$title.pdf"
done < "$tempfile1"
if [ -f $tempfile1 ]; then
rm $tempfile1
fi
if [ -f $tempfile2 ]; then
rm $tempfile2
fi
用法:./download.sh -b {base url, 需自行获取} -f {从IEEE Xplore上下载的Citations文件}
./download.sh -b http://ieeexplore.ieee.org/ielx5/6180033/6188639 -f downloadCitations.txt
有需要可以问我,嗯~@maxuan
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数