Scrapyでウェブサイトにログインしようとしましたが、受信した応答はインラインJavaScriptのみを含むHTMLドキュメントです。 JSはデータをスクラップするページにリダイレクトされます。しかし、ScrapyはJSを実行しないので、私が望むページにはルーティングしません。ScreamレスポンスでインラインJavaScriptを実行
私は必要なログインフォームを送信するには、次のコードを使用し:
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スプラッシュを見てきましたが、私は見つけることができませんでしたscrapy-splashでレスポンスでJSを実行する方法。
JSリダイレクトが表示されるページに手動で移動しようとしましたか? (すなわち、 'print_p'にURLをスクラップし、このページにリクエストを返します) – Pablo
@Pablo JSはURLを作成してリダイレクトします。 – Craig