2013-10-02 3 views
6

YQL을 사용하여 여러 페이지를 가져 오는 중 일부는 오프라인 일 수 있습니다 (분명히 어떤 페이지가 있는지 모르겠습니다). 이 쿼리를 사용하고 있습니다 :YQL을 사용하여 여러 개의 URL을로드하는 동안 URL을 가져 오는 중

SELECT * FROM html WHERE url IN ("http://www.whooma.net", "http://www.dfdsfsdgsfagdffgd.com", "http://www.cnn.com") 

여기서 첫 번째와 마지막 하나는 실제 사이트이고 두 번째 사이트는 분명히 존재하지 않습니다. 실제로 두 개의 결과가 반환되지만로드 된 위치의 URL은 어디에도 표시되지 않습니다. 그래서 어떤 HTML 페이지가 어떤 url에 속하는지 알 수있는 방법은 무엇입니까?

+0

나는 이해할 수 없다. "*하지만로드 된 곳의 URL은 어디에도 표시되지 않습니다 *"위의 코드에서 위의 코드를 수행 할 것으로 기대합니까? "* 어떤 HTML 페이지가 어떤 URL에 속하는지 알아 낸다. *"eing ??? – Oriol

+0

나는 그것이 미안하다고 생각했다. 다시 설명해 드리겠습니다. 내가 무리를로드, 그들 중 일부는로드 된 다음로드 된 URL을 배열로 포장하고 다시 내게 보냈습니다. 문제는 : 배열의 모든 요소가 대응하는지 묻는 URL에 대한 힌트가 없습니다. 그래서 그냥 코드 대신, 내가 어떤 데이터가 어떤 URL에 해당하는지, 그리고 어떤 URL이로드되지 않았는지 알 수 있도록 (URL, 데이터)의 백쌍이 필요합니다. –

답변

3

유감스럽게도, 응답에서 키 => 값 쌍을 얻을 수있는 방법을 모르지만 여기서 키는 URL이고 값은 html 응답입니다. 하지만 다음 쿼리를 사용하여 사용 사례를 충족하는지 확인할 수 있습니다.

select * from yql.query.multi where queries="select * from html where url='http://www.whooma.net';select * from feed where url='http://www.dfdsfsdgsfagdffgd.com';select * from html where url='http://www.cnn.com'" 

시도해보십시오 here. 쿼리를 실행하기 전에 할 수있는 일은 queries에있는 url 배열에서 순서를 유지하는 것입니다. ['http://www.whooma.net','http://www.dfdsfsdgsfagdffgd.com','http://www.cnn.com']과 같습니다. 이 배열을 A이라고 부를 수 있습니다. YQL 쿼리의 응답을 반복 할 때 존재하지 않는 url은 null을 반환합니다. 위의 질의에서 샘플 응답 :

<results> 
    <results> 
    // Response from select * from html where url='http://www.whooma.net'. This should be some html 
    </results> 
    <results> 
    // Response from select * from feed where url='http://www.dfdsfsdgsfagdffgd.com'. This should be null. 
    </results> 
    <results> 
    // select * from html where url='http://www.cnn.com'. This should also be some html 
    </results> 
</results> 


그래서 결론적으로, 당신은 YQL에서 배열 A 및 응답을 반복 할 수 있습니다. 배열 A의 첫 번째 요소는 해당 YQL 응답의 첫 번째 results (내부 결과) 요소와 일치해야합니다. 즉 두 배열에서 해시 맵을 생성합니다. 나는 그 대답이 길다는 것을 알고 있지만 그것이 필요하다고 생각한다. 혼동이 있으면 알려주십시오.

1

YQL 진단 플래그를 사용하여로드중인 URL을 파악할 수 있습니다. 진단 플래그를 사용하면 diagnostics 속성에 해당 서버가 있는지 여부를 나타내는 url 배열이 포함 된 응답이 발생합니다. 아마도로드하지 않은 URL을 제거하면 결과 페이지가 나머지 URL과 일치합니다.

관련 문제