는 내가 뭘 할 것은 스크랩 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에 값을 저장하십시오.
나는이 두 가지 방법으로 데이터를 얻을 수 있다고 생각합니다.
REST API 또는 Streaming API를 사용하고 있습니까? REST API의 한계에 대해 긍정적이지는 않지만 스트리밍 API를 통해 단순히 지리적 위치를 요청할 수 있습니다. – Tristen
제가 twython을 사용하고 있습니다 .. 당신은 코드 n에 해결책을 좀 도와주세요 .. –
코드에서 당신은 Google Maps API를 호출하고 있습니다. API에 의해 설정된 한계를 존중해야합니다. https://developers.google.co.kr/maps/documentation/geocoding/usage-limits –