使用谷歌应用程序脚本登录网站并点击以抓取数据

eve*_*007 6 screen-scraping login-control http-response-codes web-scraping google-apps-script

我想登录一个网站并导航到特定页面以抓取数据。我计划使用抓取(目前不是 API),出于学习目的,我计划在我的 stackoverflow 帐户上进行此操作,以提取我的声誉分数随时间的变化情况以及在哪个主题上的变化。

而且,我使用谷歌应用程序脚本作为编程语言,也是出于学习目的。

我使用下面给出的代码进行登录:

function stackLogin() {

  var url = "https://stackoverflow.com/users/login?ssrc=head";
  //var url = "https://stackoverflow.com/";

  var payload = {
    "email":"myLogin",
    "password":"myPassword"
  };


  var opt = {
    "payload":payload,
    "method":"post",
    "followRedirects": false
  };  

  var response = UrlFetchApp.fetch(url, opt);
  var sessionDetails = response.getAllHeaders()['Set-Cookie'];
  var header = {
    'Cookie': sessionDetails[1]
  };  

  Logger.log(response.getResponseCode()); 
  Logger.log(response);  
}
Run Code Online (Sandbox Code Playgroud)


当我使用时:

url = "https://stackoverflow.com/users/login?ssrc=head"
Run Code Online (Sandbox Code Playgroud)

我得到“响应代码 = 302”,但“响应 html”非常短。我还看到StackExchange OpenID上出现了新的登录 ip 在此输入图像描述


但是,如果我使用:

url = "https://stackoverflow.com"
Run Code Online (Sandbox Code Playgroud)

我得到“响应代码 = 200”,并且“响应 html”非常长。我还看到StackExchange OpenID上没有出现新的登录 IP 。


问题 1)那么,只能通过url = " https://stackoverflow.com/users/login?ssrc=head " 才能登录,仪式?


问题 2) 如果我能够登录,我想点击“我的个人资料头像按钮”

头像按钮


这将我带到“用户个人资料/摘要”页面,我想在其中单击“声誉” 个人资料摘要页面


这将我带到“声誉日志页面”,其中我按日期和主题总结了我收到的所有声誉。 声誉日志

现在,我想将这些声誉值提取为表。

如果我可以提取 HTML 页面,我可以通过检查这些信誉日志的类值来抓取数据。
我遇到的主要问题是:如何单击不同的按钮(成功登录后)才能进入“声誉日志”页面。