0

我对 Python 比较陌生,我编写了这个 Python 应用程序,它从 twitter 下载用户的所有可用推文 (3200),并创建一个 csv 文件,其中包含推文的一系列详细信息。我将发布一个片段,让您更清楚地了解情况:

 import tweepy
 import codecs
 import requests
 import csv

 auth = tweepy.OAuthHandler("xxx", "xxx")
 auth.set_access_token("xxx", "xxx")

 with open("file", mode='wb') as f:
  writer=csv.writer(f, delimiter='\t')
  headers= ['id','username','date','status','lang','source', 'place', 'coordinates', 'in_reply_to_screen_name', 'retweet_count', 'favorite_count', 'hashtags','urls', 'retweeted_status', 'retweeted_hashtags', 'retweeted_urls'] 
  writer.writerow(headers)
  api = tweepy.API(auth)
  for status in tweepy.Cursor(api.user_timeline, "x",include_entities=True).items():
    row=[]

    row.append(format(status.id).encode('utf-8'))
    ...
    ...
    ...

    urls=""
    for url in status.entities['urls']:
        expanded_url=url['expanded_url']
        r= requests.head(expanded_url)
        if r.status_code in range (200,300):
            urltext=format(r.url)
        elif r.status_code in range (300,400):
            urltext=format(r.headers['location'])
        else:
            urltext=format(r.status_code)
        urls=urls+urltext+" "
    row.append(format(urls).encode('utf-8'))
    ...
    ...
    ...  

    writer.writerow(row)

该代码有效,但它的运行时间超过 30 分钟,考虑到这需要在用户列表上进行迭代,这太长了。有什么办法可以加快速度吗?我已经阅读了 C 库和 Pypy(但我有 2.7 版),但我找不到与 tweepy 的兼容性。我应该采取什么样的方法?有我应该注意的图书馆吗?

在此先感谢您的帮助!!

4

0 回答 0