2017-04-16 11 views
0

私は500K以上の数を含むtwitterユーザ名のリストを持っています。 twythonとAPIの秘密鍵を使用するプログラムを開発することができました。プログラムや入力が故にGithubのユーザジオロケーションtwitterをダウンロード

Twitter_User_Geolocation

でここに入れるには大きすぎるアップロードされているプログラムの数は150ではなく、それよりも周りのユーザー名のための細かい動作します。この制限により、500K以上のユーザー名のジオロケーションをスクラップすることは不可能です。

私はAPIをバイパスするためにいくつかの助けを求めており、ウェブスクレイピング技術やユーザー名の地理的位置を掻き分けるための他の優れた方法を使用している可能性があります。

すべてのヘルプは大歓迎:)

+0

REST APIまたはStreaming APIを使用していますか?私はREST APIの限界について肯定的ではありませんが、ストリーミングAPIを通じてジオロケーションを要求することができます。 – Tristen

+0

私はtwythonを使用しています。あなたはcode n lookで解決策を教えてください。 –

+0

あなたのコードでもgoogle map APIを呼び出しています。APIによって設定された制限を守ってください。 https://developers.google。com/maps/documentation/geocoding/usage-limits –

答えて

2

は、私は何だろうと、スクラップtwitter.com/の代わりに、TwitterのAPIを使用しています。

主な理由は、フロントエンドはクエリが制限されていない(または少なくとも制限の少ない)ことです。また、twitterを数秒で呼び出す必要がある場合でも、User-Agentとプロキシを使って遊ぶことができます。

私にとっては、スクラップはAPIの制限を回避する最も簡単な方法です。

さらに、クロールする必要があるのは簡単にアクセスできます。私は、あなたのCSVファイルを解析してユーザーの出力場所をシンプルなコードにしました。

私は楽しみのためにあなたのレポでPRを行いますが、ここにあるコードになります。

#!/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) 

出力:

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: 'permalink'フィールドを解析します。これは、プロファイルされたスラッグを保存してプロファイルのページにアクセスするためです。それはかなり汚いですが、迅速な&それはGoogleのAPIについて


の作品、私はsurellyずっとGoogleの呼び出しに回避するために、キャッシュ/データベースの種類を使用します。あなただけのdictのように作ることができますデシベルすることなく、Pythonで

、:

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

とキーが存在する場合、はいちょうどここから私の値を取る場合、私は最初、この辞書で確認します解析する場所ごとに、それ以外の場合はgoogle APIを呼び出して、db dictに値を保存します。


この2つの方法でデータを取得できると思います。

+0

どうもありがとうございます。私は一つのことをリクエストできますか?入力のすべてのデータフレームをこれらの新しい列とともに出力に入れることで助けてください。この方法でコードを使用できるようになります.. Please ..: - ) –

+0

github PRでもっと教えてください。私はデータフレームを使ったことがないので、私は見ていきます。しかし、私はstackoverflowの部分が完了したと思う、未来のユーザーはawnserを持っています。 – Arount

+0

私はGithub PRで答えました..ここにありがとうございます.. –

関連する問題