2017-05-17 21 views
1

splash:selectを使用して要素を選択した後、その要素の下にあるすべてのアンカー要素をどのように選択しますか?スプラッシュで既に選択された要素オブジェクトから要素を選択する方法

私はscrapy /スプラッシュとこの luaスクリプト試してみました

function main(splash) 
    assert(splash:go(splash.args.url)) 
    assert(splash:wait(0.9)) 

    local classlist = splash:select('.class-list')   
    local alinks = classlist:select_all('a') 

    return {alinks=alinks} 

end 

をしかし、私はエラーをスプラッシュするには、次の不正な要求を得る:

{ 
    u'info':{ 
     u'line_number':12, 
     u'message':  u'Lua error:[ 
      string "..." 
     ]:12:attempt to call method \'select_all\' (a nil value)', 
     u'type':u'LUA_ERROR', 
     u'source':u'  [ 
      string "..." 
     ]  ', u'  error':u"attempt to call method 'select_all' (a nil value)" 
    }, 
    u'type':u'ScriptError', 
    u'description':u'Error happened while executing Lua script', 
    u'error':400 
} 

私はsplash:select('.class-list')が有効な要素を返すことを確認していますオブジェクト。

答えて

1

あなたが言うように、splash:select('.class-list')は有効な要素オブジェクトを返します。あなたの問題はその要素オブジェクトですdon't have a select_all method; splash object doesのみ代わりにsplash:select_allを別のセレクタで使用する必要があります。以下を試してください(テストされていないので注意してください)。

function main(splash) 
    assert(splash:go(splash.args.url)) 
    assert(splash:wait(0.9)) 
    local alinks = splash:select_all('.class-list a')   
    return {alinks=alinks} 
end 
関連する問題