在 Scrapy 响应中执行内联 JavaScript

Cra*_*aig 3 javascript python scrapy scrapy-splash splash-js-render

我正在尝试使用 Scrapy 登录网站,但收到的响应是仅包含内联 JavaScript 的 HTML 文档。JS 重定向到我想从中抓取数据的页面。但是 Scrapy 不执行 JS,因此不会路由到我想要的页面。

我使用以下代码提交所需的登录表单:

    def parse(self, response):
      request_id =   response.css('input[name="request_id"]::attr(value)').extract_first()
      data = {
          'userid_placeholder': self.login_user,
          'foilautofill': '',
          'password': self.login_pass,
          'request_id': request_id,
          'username': self.login_user[1:]
      }
      yield   scrapy.FormRequest(url='https://www1.up.ac.za/oam/server/auth_cred_submit',   formdata=data,
                               callback=self.print_p)
Run Code Online (Sandbox Code Playgroud)

print_p 回调函数如下:

def print_p(self, response):
    print(response.text)
Run Code Online (Sandbox Code Playgroud)

我看过scrapy-splash,但找不到在响应中使用scrapy-splash执行JS的方法。

Tom*_*art 5

我建议使用Splash作为渲染服务。就个人而言,我发现它比 Selenium 更可靠。使用脚本,您可以指示它与页面交互。