我正在使用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)
打印_p回调函数如下:
def print_p(self, response):
print(response.text)
我查看了scrapy-splash,但是我找不到一种方法可以使用scrapy-splash在响应中执行JS代码。
print_p
中抓取一个URL并生成对该页面的请求。 - Pablo