Scrapy Request有效,但SplashRequest不起作用

时间:2019-11-24 16:04:18

标签: scrapy scrapy-splash

我正在执行一个非常简单的带有飞溅的GET请求。启动调试页面并使用scrapy.Request可以正常工作。当我尝试使用scrapy_splash.SplashRequest时,出现了一个带有空标签的未渲染页面。

有效的代码:

class AccountSpider(scrapy.Spider):
    name = 'account'

    def start_requests(self):
        yield scrapy_splash.SplashRequest(
            'redacted',
            self.login,
            endpoint='render.html',
            args={
                'wait': 2,
            },
        )

无效的代码:

SPLASH_URL = 'http://0.0.0.0:8050'

settings.py具有scrapy-splash项目建议的默认设置

这是我的SPLASH_URL设置:

groupBy (list, keyValue) {
const map = new Map()
list.forEach((item) => {
  const key = item[keyValue]
  const collection = map.get(key)
  if (!collection) {
    map.set(key, [item])
  } else {
    collection.push(item)
  }
})
return Array.from(map.values())  
}

1 个答案:

答案 0 :(得分:0)

使用Splash服务器的输出,我确定SplashRequest“神奇地”设置了请求的标头。包括用户代理。

将我的代码更改为以下代码可以解决我的问题:

class AccountSpider(scrapy.Spider):
    name = 'account'

    def start_requests(self):
        yield scrapy_splash.SplashRequest(
            'redacted',
            self.login,
            endpoint='render.html',
            args={
                'wait': 2,
                'headers': {}
            },
        )