2013-03-07 2 views
0

그래서 특정 단어가 포함 된 Yahoo! Answers의 모든 질문에 대한 데이터베이스를 컴파일하려고합니다. 나는 현재 문제는 난 단지이 쿼리에서 약 10 응답을 얻을, 나는 방법을 알아낼 수 없다는 것입니다특정 단어가 포함 된 "Yahoo Answers"질문 검색. 속도 제한 문제

from Answers import Answers 

app = Answers() 
wbk = xlwt.Workbook() 


sheet = wbk.add_sheet('sheet 1') 

app.appid = '...' 
questions = app.questionSearch({'query':'tornado',}) 

#Write all column headings 
sheet.write(0,0, 'Question') 
sheet.write(0,1,'Answer') 
sheet.write(0,2, 'Date') 
sheet.write(0,3,'Number of Answers') 


for i, value in enumerate(questions): 
     content = value['Content'].strip() 
     chosenAnswer = value['ChosenAnswer'].strip() 
     date = value['Date'].strip() 
     numAnswers = value['NumAnswers'].strip() 

     #Write values into respect columns, (row, column) 
     sheet.write(i+1,0,content) 
     sheet.write(i+1,1,chosenAnswer) 
     sheet.write(i+1,2,date) 
     sheet.write(i+1,3,numAnswers) 


wbk.save('C://test.xls') 

야후 API를 호출 Pynswers 래퍼 클래스를 사용하여, 내가 쓴 다음 스크립트와 함께이 일을하고있다 내가받는 질문의 범위를 넓힐 수 있습니다. 어떤 아이디어?

+2

이것은 합법적인가요? – cowls

+0

왜 그렇지 않을까요? – Parseltongue

+0

나는 그것이 실제로, 국가, 사이트 등에 달려 있다고 생각하지 않는다. http://en.wikipedia.org/wiki/Web_scraping – cowls

답변

2

PynswersYahoo API itself 주위의 매우 느슨한 래퍼로 보입니다. API 설명서는 요청에 "시작"과 "결과"필드를 사용하여 보여줍니다 점에서,

또한

first_50 = app.questionSearch({'query':'tornado', 'start' : 0, 'results' : 50}) 
next_50 = app.questionSearch({'query':'tornado', 'start' : 50, 'results' : 50}) 

편집 : 그래서

, 아마 당신은 다음과 같은 작업을 수행 할 수 "제한 속도"로, Yahoo states in regard to their API (이 섹션에서 2013 년 3 월 7 일 촬영) :

분/시간/일에 YQL을 몇 번이나 부를 수 있습니까?

YQL의 속도 제한은 인증에 기반합니다. IP 기반 인증을 사용하는 경우 공용 YQL 웹 서비스 URL (/ v1/public/) 또는 전용 YQL 웹에 20,000 호출/시간/IP에 대해 2,000 전화/시간/IP로 제한됩니다 OAuth 인증이 필요한 URL (/ v1/yql/) 공개 URL과 비공개 URL에 대해서는 YQL 웹 서비스 URL을 참조하십시오. 응용 프로그램 (액세스 키로 식별)은 하루에 100,000 건의 통화로 제한됩니다. 그러나 모든 사람이 서비스를 사용할 수 있는지 확인하기 위해IP 인증 사용자의 경우 YQL을 초당 0.2 회 이상 또는 1000 회/시간, 초당 2.7 회 또는 회/시간.

* 속도 제한을 '피하려면'여러 개의 키를 만들지 마십시오. 우리가 한도를 높이고 싶다면 프로젝트에 대한 세부 정보를 저희에게 알려주십시오. 우리는 당신을 수용 할 수 있도록 최선을 다할 것입니다.

분명히 속도 제한을 초과하지 않고 필요한 정보를 얻으려면 코드에주의해야합니다. 그래서, "모든"대답을 얻는 것은 실용적이지 않을 수도 있습니다.

+0

고마워요. 그리고 저는이 일을 아주 잘했습니다. 내 질문, 그리고 이것에 대해 더 구체적으로 설명해야합니다, 여러 요청을 50 쿼리를 넘어하는 방법입니다. – Parseltongue

+0

알았어, 이걸 시도해 볼게. 너에게 알려 줄게. 나는 '시작'필드가 있다는 것을 깨닫지 못했습니다. – Parseltongue

+0

음 ~ 어쩌면이 문제를 해결할 방법을 생각할 수 있습니다. Yahoo API에 따르면 최대 '시작'은 1000입니다. 따라서 총 1050 개만 긁을 수 있습니다. 어떤 아이디어입니까? – Parseltongue