Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python抓取推文(日期范围)_Python_Twitter_Web Crawler_Sentiment Analysis - Fatal编程技术网

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

使用python抓取推文(日期范围),python,twitter,web-crawler,sentiment-analysis,Python,Twitter,Web Crawler,Sentiment Analysis,我正在为我的论文抓取推文。我使用Pattern()进行爬网(以及情绪分析),这需要运行Python(2.7)程序 到目前为止,我已经能够提出你可以在下面找到的程序。它可以工作,但仅用于收集X数量的最新推文 我的问题是:你能帮我做到这一点吗,我可以在特定日期范围(例如:2014年1月1日至2014年3月31日)之间为特定用户名抓取推文 (或者如果不可能,增加此时抓取的tweet数量(对不同的用户名使用相同的程序(每个用户名都有1000条tweet),我会得到40到400条之间的结果) 提前非常感谢

我正在为我的论文抓取推文。我使用Pattern()进行爬网(以及情绪分析),这需要运行Python(2.7)程序

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

我的问题是:你能帮我做到这一点吗,我可以在特定日期范围(例如:2014年1月1日至2014年3月31日)之间为特定用户名抓取推文

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

提前非常感谢

(附言:如果以上任何一条都不可能,我非常乐意听取其他选择来收集必要的推文。我应该补充一点,我在编程方面没有很强的背景。)


我建议您使用Twitter的流式API,而不是爬行。这样,您将获得比爬行更多的推文。如果未达到firehose的1%的速率限制,则几乎所有推文。还提供了过滤器,您可以使用

twitter流媒体api的Python模块包括:-

  • 特威顿
  • 推特
  • 特威比
等等


我用特威顿。这很好。希望这能有所帮助。

抓取推文不是一个很好的方法,但只要推特不阻塞你的刮板,它就会工作。我推荐Twitter API(流媒体和搜索API)。他们会让你抓取推文并将其存储在数据库中,然后做任何你想做的分析

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