2017-05-17 8 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 

을하지만, 나는 다음과 같은 잘못된 요청 오류가 튀김 (Splash)에 도착 :

{ 
    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