나는 트위터 계정의 수를 추종자 카운트를 포함하는 간단한 작업이 주어졌다. 내가 만들고있는 응용 프로그램이 각 사용자의 팔로워 수를 계산하고 합산하기로되어있는 1000 개의 트위터 사용자 이름이있을 수 있습니다.트위터 속도 제한
쉬운 작업처럼 보였으므로 Twitter API 호출 (은 C# 클라이언트)을 사용하여 각 사용자에게 필요한 정보를 얻었습니다.
이가 (속도와 목적을 자족의 측면에서) 크게 작동string target = "http:twitter.com/users/" + userName + ".xml";
Console.WriteLine("UserName: " + userName);
WebClient client = new WebClient();
Stream stream = client.OpenRead(target); StreamReader reader = new
StreamReader(stream);
XmlTextReader xml_read = new XmlTextReader(stream);
while (xml_read.Read()) {
xml_read.MoveToElement();
if (xml_read.Name == "name") {
Console.WriteLine("Name: " + xml_read.ReadInnerXml().ToString());
}
if (xml_read.Name == "followers_count"){
Console.WriteLine("Followers: " +
xml_read.ReadInnerXml().ToString());
Console.WriteLine();
}
}
그러나이 속도 문제가있다 : 난 후 해요 정보 단지 일부 공공 데이터 특별한 것이 없기 때문에, 나는 인증되지 않은 calls.Like이 사용 제한. 즉, 시간당 100 개 이상의 요청을 처리 할 수 없습니다. 1000 명의 사용자는이 간단한 작업을 수행하는 데 10 시간이 필요합니다. ..
나는 다른 경로로 가려고했다. 내가 필요로하는 정보가 공개되어 있기 때문에 추종자 (그리고 실명)를 얻기 위해 각 트위터 계정의 HTML 페이지를 다운로드하기로 결정했다. 이렇게 :
WebRequest myWebRequest = WebRequest.Create("http://twitter.com/" + userName);
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(ReceiveStream, encode);
string strResponse = readStream.ReadToEnd();
다음 간단한 문자열 구문 분석을 사용하여 추종자 수와 실제 이름을 얻습니다.
이 솔루션은 유효합니다 .. 그러나 전체 HTML 파일 (300kb + 크기)을 다운로드하는 것은 실제로 그것을하는 현명한 방법이 아닙니다. 또한 작업을 완료하는 데 약 2 시간이 걸립니다.
내가 원하는 것은 무엇입니까?
트위터에서 공개 정보를 얻는 더 스마트하고 효율적인 방법이 있기를 희망합니다.
처음으로 데이터가 필요한 앱의 Twitter 계정을 어떻게 얻었습니까? 계정이 있다면 앱에서 계정에 액세스 할 수 있습니까? 원하는 정보가 공개 된 것으로 알고 있는데, 계정에 토큰이 있다면 토큰을 반복하여 각 계정의 정보를 개별적으로 검색 할 수 있으므로 속도 제한을 피할 수 있습니다. 제한된 계정 당 요청 수.속도 제한이있는 이유 중 일부는 사람들이 승인없이 Twitter 데이터를 구축 할 수 없기 때문입니다. – phreak3eb