XML 결과를 반환하는 API를 (urllib
/urllib2
을 통해) 사용하고 있습니다. API는 항상 내 쿼리에 대한 total_hit_count를 반환하지만, 결과는 100 또는 1,000의 배치로 검색 할 수 있습니다. API는 결과를 처리하기 위해이 값을 상쇄하기 위해 start_pos 및 end_pos를 지정해야한다고 규정합니다.API에 대한 요청 페이지 지정
urllib 요청이 http://someservice?query='test'&start_pos=X&end_pos=Y
처럼 보입니다.
http://someservice?query='test'&start_pos=1&end_pos=1
과 같은 가장 낮은 데이터 전송을 가진 초기 'taster'쿼리를 보내어 추측을 위해 total_hits = 1234
의 결과를 얻으려면 이러한 1234 개의 결과를 가장 명확하게 요청하기위한 접근 방식을 제안하고 싶습니다. 다시 말하자면, 100 또는 1000 또는 ...
이것은 내가 지금까지 생각해 낸 것이고, 작동하는 것처럼 보이지만, 당신이 다르게 작업했는지 알고 싶습니다. 이 문제를 개선 할 수 있습니다.
hits_per_page=100 # or 1000 or 200 or whatever, adjustable
total_hits = 1234 # retreived with BSoup from 'taster query'
base_url = "http://someservice?query='test'"
startdoc_positions = [n for n in range(1, total_hits, hits_per_page)]
enddoc_positions = [startdoc_position + hits_per_page - 1 for startdoc_position in startdoc_positions]
for start, end in zip(startdoc_positions, enddoc_positions):
if end > total_hits:
end = total_hits
print "url to request is:\n ",
print "%s&start_pos=%s&end_pos=%s" % (base_url, start, end)
ps 필자는 오랜 시간 StackOverflow를 사용하고 있는데, 특히 Python 관련 질문입니다.하지만 이것이 첫 번째 질문입니다. 너희들은 정말 대단해.
튀긴 황금 조각, 감사합니다. 나는 모자를 벗다. 자, 어떻게하면 당신의 탁월한 의견에 모자를 버릴 수 있을까요? – craigs
upvote는 좋은 시작이었습니다 ;-) –