Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从谷歌学者页面中提取合著者_Javascript_Api_Url_Dom_Web Scraping - Fatal编程技术网

Javascript 如何从谷歌学者页面中提取合著者

Javascript 如何从谷歌学者页面中提取合著者,javascript,api,url,dom,web-scraping,Javascript,Api,Url,Dom,Web Scraping,我正试图使用JavaScript从谷歌学者页面中刮取合著者的姓名 只有在单击出版物链接后,才能看到出版物的所有合著者。然后弹出一个页面,显示共同作者。但是,为每一份出版物这样做是非常耗时的。 我甚至无法使用axios在发布链接上获取数据,例如,这会导致CORS*错误 如何高效地获取合著者姓名 我对你的问题的理解是,你想在页面右侧列出所有合著者的姓名。对吗?这里是我的解决方案,以获得他们所有的名字 首先,它们的所有详细信息都在标记内,而所有这些li标记都在内。所以,您必须做的是,使用const l

我正试图使用JavaScript从谷歌学者页面中刮取合著者的姓名

只有在单击出版物链接后,才能看到出版物的所有合著者。然后弹出一个页面,显示共同作者。但是,为每一份出版物这样做是非常耗时的。 我甚至无法使用axios在发布链接上获取数据,例如,这会导致CORS*错误

如何高效地获取合著者姓名


我对你的问题的理解是,你想在页面右侧列出所有合著者的姓名。对吗?这里是我的解决方案,以获得他们所有的名字

首先,它们的所有详细信息都在
  • 标记内,而所有这些li标记都在
      内。所以,您必须做的是,使用
      const list=document.querySelectorAll(“.gsc\u rsb\u a li”)
      命令为所有
    • 创建对象

      下一个阶段是在这些li标记中获取
      textContent
      表单的多个
      。请看,spans提供了所有合著者的详细信息,共有三位。如果我们使用
      textContent
      属性,第一个将返回空字符串,第二个由名称、指定、位置、电子邮件id组成,第三个只有指定和位置。我所做的是从第二个名字中提取名字。这是通过使用多个属性
      indexOf()
      slice()
      实现的。最后一件事是
      push()
      将它们的名称放入一个数组中

      const list = document.querySelectorAll(".gsc_rsb_a li");
      var slicedName = new Array(); //Array to save names
      var description; //To store third span details 
      var descriptionAndName; //To store second span details
      var index;
      
      for(var i=0;i<list.length;i++){
       description = list[i].querySelectorAll("span")[2].textContent //will get discription of authors
       descriptionAndName = list[i].querySelectorAll("span")[1].textContent //will get discription + name
       index = descriptionAndName.indexOf(description);
       slicedName.push(descriptionAndName .slice(0,index));
      }
      
      const list=document.queryselectoral(“.gsc_rsb_a li”);
      var slicedName=新数组()//用于保存名称的数组
      var描述//存储第三个span详细信息的步骤
      变量描述和名称//存储第二个跨度详细信息的步骤
      var指数;
      
      对于(var i=0;i每个出版物标题都包含一个javascript链接,触发弹出窗口并加载其他html内容(包括作者)

      您可以使用浏览器扩展来抓取javascript呈现的内容,而不是试图找出XHR请求

      • 导航CSS选择器用于“显示更多”按钮,打开弹出窗口详细信息,关闭弹出窗口
      • 出版物标题、作者、年份、期刊/书籍的内容CSS选择器
      基于这些选择器,我使用开源的scrape扩展创建了一个scrape场景

      "2.一个新的研究发现了一个新的研究成果,一个新的研究发现了一个新的研究成果,一个新的研究发现了一个新的研究成果,一个新的研究成果,一个新的研究报告,一个新的研究成果,一个新的研究成果,一个新的研究成果,一个新的研究成果,一个新的研究成果,一个新的研究成果,一个新的研究成果,一个新的研究,一个新的研究,一个新的研究成果,一个新的研究,2。2。2。2。1。2。2。2。2。2。2。2。2。2。2。2。2。2。2。2。2。他们的研究结果,他们的研究结果是,他们在一个新的一个新的研究中,他们的研究成果是,他们的一个新的研究成果是,他们的一。2。6。6。6。6。6。6。他们的。他们的研究。他们的O769/pf9tFm5avzWbcAGl5km7h0TBprFNn83PoDTbC1c0sFDUa8h4RfXkgehcNJXDMIa4O2FC5C13RpaEhVPBGufLCnRwxHo4bB5/zEHAg“

      在扩展内,执行以下操作:新建项目>配置哈希>粘贴上述哈希(不带引号)>保存、刮取、查看结果>导出为csv


      免责声明:我是扩展作者。

      您好,我感谢您的回答,但我正试图提取问题中每一篇文章的共同作者。请参考图片以获取参考。
      var authors=document.querySelectorAll(".gs_gray"); //selecting all the names into an object
      var authorName=new Array();
      
      for(var i=0;i<authors.length;i+=2){
        authorName.push(authors[i].textContent);
      }