使用python抓取推文(日期范围)
我正在为我的论文抓取推文。我使用Pattern()进行爬网(以及情绪分析),这需要运行Python(2.7)程序 到目前为止,我已经能够提出你可以在下面找到的程序。它可以工作,但仅用于收集X数量的最新推文 我的问题是:你能帮我做到这一点吗,我可以在特定日期范围(例如:2014年1月1日至2014年3月31日)之间为特定用户名抓取推文 (或者如果不可能,增加此时抓取的tweet数量(对不同的用户名使用相同的程序(每个用户名都有1000条tweet),我会得到40到400条之间的结果) 提前非常感谢 (附言:如果以上任何一条都不可能,我非常乐意听取其他选择来收集必要的推文。我应该补充一点,我在编程方面没有很强的背景。)使用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条之间的结果) 提前非常感谢
我建议您使用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