zotero抓取google学术,只抓取列表页面信息

0.目录

  • 1.摘要
  • 2.背景
  • 3.分析思路
    • 3.1 试错
    • 3.2 重新分析google学术
    • 3.3 zotero如何导入
    • 3.4 写代码
  • 4.使用说明
    • 4.1 下载源码
    • 4.2 打开转换工具
    • 4.3 在google学术中搜索内容
    • 4.4 复制html
    • 4.5 提取数据
    • 4.6 导入zotero
    • 4.7 连续操作,导入大量论文
    • 4.8 抓取作者页面的文章
    • 4.9 引用数的处理
  • 5.讨论
  • 6.源码

1.摘要

用google学术列表页面的源代码生成Refworks格式文档,导入Zotero的方法。在搜索列表和作者列表中,可以导入的元数据有,标题,链接,作者,年份,来源,摘要(部分)。

2.背景

用zotero直接抓google学术列表页面的文档,一般抓到几十篇的时候就会被封访问,但在google学术中只查看列表页面一般不会被封访问。google学术是好用的论文内容来源,在课程中权重很高,希望能找到一个方法顺利抓取google学术的论文。搜索列表和作者页面的数据虽然比较少,但有最重要的几项元数据:标题,链接,作者,年份,来源,摘要(部分)和引用数。

课程中一个非常重要的知识点是“批量下载1000篇论文”,本人实际操作过,这个知识点真的特别有用。这个练习中只要有前面提到的几项论文元数据就可以完成大部分工作,所以想要写一个小工具帮自己和同学快速导入论文列表。

老师说过不要过分沉迷于工具,要多做练习。还要做这个工具的原因是:google学术实在太重要了。

3.分析思路

3.1 试错

  • 亲自使用zotero 抓取google 学术的论文,一般抓50篇左右就会被封禁ip。
  • 在讨论区找到这个帖子,发现这是个难题,老师和其他同学也在研究,不好解决。
    • Chrome访问谷歌学术被拒绝
  • 就像上面帖子说的,要是能把一个作者的论文全点出来之后一次抓完就太爽了。
  • 在美国买了一台服务器,远程连接后在服务器上抓取文章,同样,20多篇就封ip了。

3.2 重新分析google学术

  • 主要的问题是google学术对于访问次数的限制,所以不要增加访问次数,也不要用服务器端程序 。服务器端程序访问的人多了更容易被封。
  • 页面只要加载完成后,html代码不会变,所以在作者页面把论文全点出来一次抓完是可以做到的。
  • 修改zotero的translater可以实现上述需求,但研发成本很高,还会影响正常使用。最简单的办法是用javascript写一个工具页面,让谁都可以下载到本地使用。
  • 最后留给使用者的问题是把google学术列表中的html复制出来放到工具页面的输入框里,这个5分钟可以学会。
  • 先上google 搜索一下,有没有人已经做了同样的工作,搜索“zotero google scholar list page”,好像还没人这样做。
  • 剩下的工作是分析html代码,提取有用的内容,在html页面中分析dom提取内容是很容易的。何况还有jquery神器。

3.3 数据如何导入zotero

  • zotero可以导入知网上下载来的 RefWorks格式[1] 的论文,只要把数据处理成RefWorks格式,肯定可以顺利导入zotero。
  • zotero还有一个好用的功能是“从剪贴板导入”,用这个功能可以省去把分析好的文档保存到本地的麻烦。

3.4 写代码

写代码和调试花了2个多小时(对码农来说快得像15分钟),初步测试通过,发上来供大家参考,代码在文章最后。

4.使用说明

  • 4.1 下载源码
    在桌面上创建一个txt文件google_scholar_parser.txt,用记事本打开,把文章最下面的源码复制进来,保存。

  • 4.2 打开转换工具
    把文件名改成google_scholar_parser.html,用chrome打开(只在chrome中测试过)。


    zotero抓取google学术,只抓取列表页面信息_第1张图片
    image.png
  • 4.3 在google学术中搜索内容。
    在页面上点击右键,选择“检查”。


    zotero抓取google学术,只抓取列表页面信息_第2张图片
    image.png
  • 4.4 复制html
    在弹出的窗口中Elements标签下,右键点击最上面html这一行,选择Copy -> Copy outerHTML。


    zotero抓取google学术,只抓取列表页面信息_第3张图片
    image.png
  • 4.5 提取数据
    到google_scholar_parser.html页面中,在左边的输入框里粘贴代码,然后点击"提取数据"。论文数据就会提取并转换成RefWorks格式,出现在右侧的输入框里。

  • 4.6 导入zotero
    在右侧输入框中ctrl+a全选内容ctrl+c复制,打开zotero,选择想要放入的目录,点击文件 -> 从剪贴板导入,论文就导入zotero中了。这样导入的论文没有附件,双击条目可以跳转到论文原始页面。


    zotero抓取google学术,只抓取列表页面信息_第4张图片
    image.png
  • 4.7 连续操作,导入大量论文
    连续操作的时候,右侧输入框中的数据会追加,可以导入多页列表后再一次导入zotero。连续操作如下。
    在google学术中点下一页 -> 右键复制html -> 到工具页面左侧输入框 -> ctrl+a全选 -> ctrl+v粘贴 -> 提取数据 -> (再一次)在google学术中点下一页 -> 右键复制html -> 到工具页面左侧输入框 -> ctrl+a全选 -> ctrl+v粘贴 -> 提取数据......(多次后)......在工作页面右侧输入框中ctrl+a全选 -> ctrl+c复制 -> 到zotero中找选择目录 -> 文件 ->从剪贴板导入
    这样在导入大量论文的时候效率比较高。本人亲测导入50篇论文不到2分钟。最重要的是这样可以最大化避免被封禁访问。

    zotero抓取google学术,只抓取列表页面信息_第5张图片
    image.png

  • 4.8 抓取作者页面的文章

    • 方法同上面一样,在作者页面点最下面“更多”,多加载些论文后一次复制html到转换工具中,提取数据 ,一次抓几百篇论文没有问题。


      zotero抓取google学术,只抓取列表页面信息_第6张图片
      image.png
    • 作者页面中,没有文章的链接地址,程序生成了链接地址。双击zotero中导入的条目,会跳转到google学术中搜索论文标题。使用起来也很方便。
    • 作者页面中没有文章摘要,所以导入的论文数据也没有文章摘要。
  • 4.9 引用数的处理
    我们的课程中,zetore引用数放在“其他”这个字段中,但refworks格式文档中无法导入“其他”这一列,所以把引用数放在“期刊”这一列中,同样可以点击排序。


    zotero抓取google学术,只抓取列表页面信息_第7张图片
    image.png

5.讨论

  • 本文未剧透课程内容。
  • 代码量很小,但是中间的分析过程很费时间。
  • 后续用再上传github分享给大家。
  • 本文在中完成,原文地址,格式更好看一点。
  • 导入作者页面文章列表已经完成了,一次导入几百上千篇也没有问题,但没有文章摘要。
  • 最重要的是这样可以最大化避免被封禁访问。
  • 文章被阳老师在群里夸了,开心。
  • 我做练习次数比较多,了解练习的好处和痛点,又熟悉编程,所以能完成这个工具。练习次数很重要。

6.源码

为了方便没有基础的朋友看,多加了些注释



google scholar转换refworks 



点击查看使用说明

引用

[1]Refworks协议格式

changelog

2019-03-10 吕明明创建,目前只能抓搜索列表页面,还不能抓作者的列表页面,明天抽时间完善
2019-03-11 完善了一下代码,可以抓取作者的文章列表页面了,40分钟更新完毕,感觉真挺好用的
2019-03-11 把引用数放入“期刊”这个列中,方便排序 ,具体请看章节 4.9。修改几处文法错误。

你可能感兴趣的:(zotero抓取google学术,只抓取列表页面信息)