Twitter Streaming API Python - 将不完整的数据写入文件

时间:2015-05-26 19:51:08

标签: python python-2.7 tweepy twitter-streaming-api

我正在使用Twitter Streaming API来获取与特定关键字匹配的推文。获得的输出被写入文件。我根据推文的起源距离进行了一些基本的比较,并相应地写入单独的文件。

        lat2=float(d['geo']['coordinates'][0])
        long2=float(d['geo']['coordinates'][1])
        lat1=venue_latitude
        long1=venue_longitude
        lon1, lat1, lon2, lat2 = map(radians, [long1, lat1, long2, lat2])
        dlon = lon2 - lon1 
        dlat = lat2 - lat1 
        a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
        c = 2 * asin(sqrt(a)) 
        distance = 6367 * c * 0.621371
        if distance < 1:
            user= d['user']['screen_name']
            user_id=d['user']['id']
            file=open('Tweets_within_one_mile.txt','a')
            users.append(user)
            text=str(user)  + str(user_id)+ "qwertyasdfgzxcvb" + str(distance) + d['text'] 
            u = text.encode('utf-8')
            file.write(u)
            file.close()
        if distance > 2 and distance < 60:
            user= d['user']['screen_name']
            user_id=d['user']['id']
            file=open('Tweets_within_sixty_miles.txt','a')
            users.append(user)
            text=str(user)  + str(user_id) + str(co_lon2) +d['text']
            u = text.encode('utf-8')
            file.write(u)
            file.close()

上次运行脚本的时候。收集的推文数量达到了30,000。但是只有20,000条推文被完整地写入文件。其余10,000人写得不完整。

Python输出缓冲区有问题吗?

1 个答案:

答案 0 :(得分:0)

我无法确定其中只有部分内容已保存的确切原因,但构建if语句的方式可能与其有关。

例如:

if distance < 1:
    print("foo")

if distance  > 2 or distance a < 60:
    print("bar")
  1. 该代码适用于较小的值,但不等于1.
  2. 1到2之间的数字不起作用(即1.1到1.9)
  3. 数字等于2或60
  4. 数字大于60
  5. 同样,不确定您尝试获取的确切值,但这可能会有所帮助(它会捕获所有数据):

    if distance <= 1:
        print("foo")
    
    if 2 <=distance or distance <= 60:
        print("bar")