使用python抓取推文(日期范围)

时间:2014-04-11 04:40:21

标签: python twitter web-crawler sentiment-analysis

我试图为我的论文抓取推文。我使用Pattern(http://www.clips.ua.ac.be/pages/pattern-web)来抓取(以及进行情感分析),这需要运行Python(2.7)程序。

到目前为止,我已经能够提出您可以在下面找到的程序。它的工作原理只适用于收集X量的最新推文。

我的问题是:您能否帮助我做到这一点,我可以在某个特定用户名的特定日期范围(例如:2014年1月1日 - 2014年3月31日)之间抓取推文?< / p>

(或者,如果不可能的话,增加此时抓取的推文数量(对不同的用户名使用相同的程序(每个都有1000条推文),我得到的结果在40到400之间))。

非常感谢你!

(PS:如果以上都不可能,我非常乐意听取替代方案来收集必要的推文。我应该补充一点,我没有很强的编程背景。 )

import os, sys; sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))
import time
from pattern.web import Twitter, hashtags
from pattern.db  import Datasheet, pprint, pd
from pattern.en  import sentiment

try: 
    table = Datasheet.load(pd("test.csv"))
    index = set(table.columns[0])
except:
    table = Datasheet()
    index = set()

engine = Twitter(language="en")

prev = None
for i in range(1000):
    print i
    for tweet in engine.search("from:username", start=prev, cached=False):
            if len(table) == 0 or tweet.id not in index:
            table.append([tweet.id, tweet.date, sentiment(tweet.text.encode("iso-8859-15", "replace"))])
            index.add(tweet.id)
        prev = tweet.id
    # sleep time to avoid search limit error (180 requests per 15min window)
    time.sleep(5.1)


table.save(pd("test.csv"))

print "Total results:", len(table)
print

1 个答案:

答案 0 :(得分:0)

抓取推文并不是一个很好的方法,但只要Twitter不阻止你的刮刀,它就会起作用。我推荐Twitter API(包括流媒体和搜索API)。他们会让你抓住推文并将它们存储在数据库中并进行你想要做的任何分析。