2017-04-16 1 views
0

500K 이상의 숫자가 포함 된 트위터 사용자 이름 목록이 있습니다. twython과 API 비밀 키를 사용하는 프로그램을 개발할 수 있습니다. 프로그램 및 입력은 다운로드 사용자 지리적 위치 트위터

Twitter_User_Geolocation

이 프로그램은 수의 약 150 사용자 이름하지만 이하 벌금 실행 Github에서

여기에 따라서 업로드 넣어 너무 큽니다. 이 제한으로 인해 500K + 사용자 이름의 지리적 위치를 고칠 수는 없습니다.

나는 API를 우회하는 데 도움이되고 웹 스크래핑 기술이나 사용자 이름의 위치 정보를 긁어내는 다른 방법을 사용할 수 있습니다.

모든 도움을 주시면 감사 :

+0

REST API 또는 Streaming API를 사용하고 있습니까? REST API의 한계에 대해 긍정적이지는 않지만 스트리밍 API를 통해 단순히 지리적 위치를 요청할 수 있습니다. – Tristen

+0

제가 twython을 사용하고 있습니다 .. 당신은 코드 n에 해결책을 좀 도와주세요 .. –

+0

코드에서 당신은 Google Maps API를 호출하고 있습니다. API에 의해 설정된 한계를 존중해야합니다. https://developers.google.co.kr/maps/documentation/geocoding/usage-limits –

답변

2

는 내가 뭘 할 것은 스크랩 twitter.com/ 대신 트위터의 API를 사용합니다.

주된 이유는 프런트 엔드가 쿼리 제한이 없거나 적어도 제한적인 방법이 아니기 때문이며 트위터에 너무 많은 시간을 초 단위로 호출해야하는 경우에도 User-Agent 및 프록시를 사용하여 재생할 수 있습니다.

나를 위해, 스크랩은 API 제한을 우회하는 가장 쉬운 방법입니다.

크롤링 할 필요가있는 것은 실제로 액세스하기 쉽습니다. 나는 사용자의 CSV 파일과 출력 위치를 구문 분석하는 simple'n'dirty 코드를 만들었습니다.

#!/usr/env/bin python 

import urllib2 
from bs4 import BeautifulSoup 

with open('00_Trump_05_May_2016.csv', 'r') as csv: 
    next(csv) 
    for line in csv: 
     line = line.strip() 

     permalink = line.split(',')[-1].strip() 
     username = line.split(',')[0] 
     userid = permalink.split('/')[3] 

     page_url = 'http://twitter.com/{0}'.format(userid) 

     try: 
      page = urllib2.urlopen(page_url) 
     except urllib2.HTTPError: 
      print 'ERROR: username {} not found'.format(username) 
     content = page.read() 
     html = BeautifulSoup(content) 
     location = html.select('.ProfileHeaderCard-locationText')[0].text.strip() 

     print 'username {0} ({1}) located in {2}'.format(username, userid, location) 

출력 :

여기 여러분 만의 repo에 PR을 할 것이지만 코드이며,이 코드를 업데이트해야합니다

분명히
username cenkuygur (cenkuygur) located in Los Angeles 
username ilovetrumptards (ilovetrumptards) located in 
username MorganCarlston hanifzk (MorganCarlston) located in 
username mitchellvii (mitchellvii) located in Charlotte, NC 
username MissConception0 (MissConception0) located in #UniteBlue in Semi-Red State 
username HalloweenBlogs (HalloweenBlogs) located in Los Angeles, California 
username bengreenman (bengreenman) located in Fiction and Non-Fiction Both 
... 

이 더 강력한 만들 수 있지만, 기본 사항이 완료되었습니다.

PS : '영구 링크'필드를 구문 분석하기 때문에 프로필이있는 페이지로 이동하기 위해 슬러그를 잘 저장합니다. 그것은 꽤 더러운하지만 & 빠른 그것은 내가 surelly 많은 구글의 통화를 피하기 위해 캐시/데이터베이스의 종류를 사용합니다, 구글 API에 대한


작동합니다. 당신은 단지 딕셔너리처럼 만들 수 있습니다 데시벨없이 파이썬에서

:

{ 
    "San Fransisco": [x.y, z.a], 
    "Paris": [b.c, d.e], 
} 

그리고 키가있는 경우 예 여기에서 내 가치를 수강하면 먼저이 딕셔너리에서 확인 할 구문 분석하는 각 위치에, 그렇지 않으면 google API를 호출하고 db dict에 값을 저장하십시오.


나는이 두 가지 방법으로 데이터를 얻을 수 있다고 생각합니다.

+0

정말 고마워 .. 한가지 만 부탁 할 수 있을까요 ..이 새로운 열과 함께 입력의 모든 데이터 프레임을 출력에 넣으면 도움이 될 수 있습니까? 이렇게하면 코드를 사용할 준비가됩니다 .. 제발 .. : -) –

+0

github PR에 대해 더 자세히 알려주십시오. 나는 데이터 프레임을 사용한 적이 없으므로 나는 보게 될 것이다. 하지만 stackoverflow 부분이 완료된, 미래의 사용자가 자신의 awnser있다 생각합니다. – Arount

+0

나는 Github PR에서 대답했다 .. 여기에 감사드립니다. –