我正在执行一个非常简单的带有飞溅的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())
}
答案 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': {}
},
)