簡體   English   中英

在 Scrapy 響應中執行內聯 JavaScript

[英]Execute inline JavaScript in Scrapy response

我正在嘗試使用 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的方法。

我建議使用Splash作為渲染服務。 就個人而言,我發現它比 Selenium 更可靠。 使用腳本,您可以指示它與頁面交互。

大概 selenium 可以幫你通過這個 JS。

如果你沒有檢查它仍然可以使用像一些例子 如果你有幸到達它,那么你可以獲得頁面網址:

self.driver.current_url

然后刮掉它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM