【问题标题】:Execute inline JavaScript in Scrapy response在 Scrapy 响应中执行内联 JavaScript
【发布时间】:2017-11-25 13:18:45
【问题描述】:

我正在尝试使用 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)

print_p回调函数如下:

def print_p(self, response):
    print(response.text)

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

【问题讨论】:

标签: javascript python scrapy scrapy-splash splash-js-render


【解决方案1】:

大概 selenium 可以帮你通过这个 JS。

如果您还没有检查过,可以使用this 等示例。如果您有幸到达它,那么您可以通过以下方式获取页面网址:

self.driver.current_url

然后刮掉它。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2020-09-05
      • 2017-07-24
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      相关资源
      最近更新 更多