twitter api的使用获取关注者的时间线
# -*- coding: utf-8 -*-
from tweepy import OAuthHandler
import datetime
import pandas as pd
import tweepy
import time
import random
import traceback
from dbs.db import * class Twitter_Spider():
def __init__(self):
self.main_tw_url="https://twitter.com/{}/status/{}"
self.china_time_list = []
self.twitter_id_list = []
self.twitter_url_list = []
self.twitter_text_list = []
self.twitter_url_list = []
self.update_time_list = []
self.twitter_dicts = {}
self.user_id_list = []
self.user_name_list = []
self.crate_time_list=[]
self.userdicts={}
self.stopflag=False def getapi(self):
consumer_key = 'IAaj345Xf673kzT2'
consumer_secret = 'ee9WEQ235555We0gP4peRbOPeeHGX1'
access_token = '9767625356VEnq7s9ZXOHEI'
access_secret = 'lyqj2122333o9G4fHta'
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
return api def start(self):
api =None
try:
api = self.getapi()
except tweepy.TweepError:
print('Error! Failed to get access token.') nowdate = datetime.datetime.now()
beforeweek=nowdate-datetime.timedelta(days=7) #一周前
#只获取关注者id
# ids = []
# for page in tweepy.Cursor(api.friends_ids).pages():
# ids.extend(page)
# 获取关注者id和screen_name for pages in tweepy.Cursor(api.friends).pages():
for page in pages:
userstr = page._json
self.userdicts.setdefault(userstr.get("id"),userstr.get("screen_name"))
for user_id in self.userdicts.keys():
self.stopflag=False
self.twitter_dicts.clear()
for i,statuslist in enumerate(tweepy.Cursor(api.user_timeline, id=user_id).pages()): #获取第一页,一页20个
if not self.stopflag:
print("start page:{}".format(i))
for status in statuslist:
jsonstr = status._json
if self.getItem(jsonstr,beforeweek,user_id):
break
else:
break
time.sleep(random.randint(2, 6))
self.twitter_dicts.setdefault("user_id", self.user_id_list)
self.twitter_dicts.setdefault("user_name", self.user_name_list)
self.twitter_dicts.setdefault("china_time",self.china_time_list)
self.twitter_dicts.setdefault("tw_time", self.crate_time_list)
self.twitter_dicts.setdefault("tw_id", self.twitter_id_list)
self.twitter_dicts.setdefault("tw_text", self.twitter_text_list)
self.twitter_dicts.setdefault("tw_url", self.twitter_url_list)
self.twitter_dicts.setdefault("updatetime", self.update_time_list)
try:
SaveData().save_object_data(self.twitter_dicts)
except:
print(traceback.format_exc("insert db error")) def getItem(self, jsonstr,beforeweek,user_id):
create_time = jsonstr.get("created_at")
china_time=""
try:
china_time=datetime.datetime.strptime(create_time,"%a %b %d %H:%M:%S +0000 %Y")
if beforeweek>china_time:
self.stopflag=True
return self.stopflag
except:
print(traceback.format_exc())
screen_name=self.userdicts.get(user_id)
self.china_time_list.append(china_time)
self.crate_time_list.append(create_time)
self.user_id_list.append(user_id)
self.user_name_list.append(screen_name)
twitter_id = jsonstr.get("id")
self.twitter_id_list.append(twitter_id)
self.twitter_url_list.append(self.main_tw_url.format(screen_name,twitter_id))
twitter_text = jsonstr.get("text")
print(twitter_text)
self.twitter_text_list.append(twitter_text)
self.update_time_list.append(datetime.datetime.now())
return self.stopflag if __name__ == "__main__":
Twitter_Spider().start()
twitter api的使用获取关注者的时间线的更多相关文章
- twitter api
1,twurl安装 1.1,安装软件管理包工具,在管理员身份打开的cmd中执行: @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powersh ...
- Twitter API 申请key
最近听了一下coursera的python课(https://www.coursera.org/learn/python-network-data/home/welcome),讲的挺简单也挺有意思.其 ...
- Twitter API升级至1.1
Twitter API 1.1是至今最大的一次升级,从3月份提出,到6月11日1.0版本已经全面停止调用.关于1.1版本升级特性可访问: https://dev.twitter.com/docs/ap ...
- 【百度地图API】如何获取行政区域的边界?
原文:[百度地图API]如何获取行政区域的边界? 摘要:以前教过大家如何自行获取行政区域,或者自定义获取一个区域的边界值.今天来教大家直接调用百度地图API1.3(目前最新版本)来获取行政区域的边界值 ...
- 【百度地图API】自行获取区域经纬度的工具
原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...
- 百度地图API地点搜索-获取经纬度
分享一下地图上的地点搜索和鼠标点击获取地点经纬度,这些都是地图比较基本和实用的代码,其中还包括了根据用户IP进行地图的显示.改变地图上的鼠标样式.启用滚轮缩放等,算是半入门吧,其他的一些可以自己参考百 ...
- 简单几行代码使用百度地图API接口分页获取信息
首发于: 万能助手扩展开发:使用百度地图API接口分页获取信息_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=426 使用 ...
- 【Azure Developer】Python 获取Micrisoft Graph API资源的Access Token, 并调用Microsoft Graph API servicePrincipals接口获取应用ID
问题描述 在Azure开发中,我们时常面临获取Authorization问题,需要使用代码获取到Access Token后,在调用对应的API,如servicePrincipals接口. 如果是直接调 ...
- 设计Twitter 时间线
「design Twitter」是 LeetCode 上第 335 道题目,不仅题目本身很有意思,而且把合并多个有序链表的算法和面向对象设计(OO design)结合起来了,很有实际意义,本文就带大家 ...
随机推荐
- Oracle 11g 审计跟踪管理
在Oracle11g之前,oracle数据库自带的审计功能是关闭的,考虑到性能和审计管理的复杂性,用户一般不打开审计功能.如果有审计要求,DBA会采用trigger来实现对DDL审计的方法来折中.例如 ...
- chrome提示Adobe Flash Player过期解决
安装插件:install_flash_player_ppapi.exe
- js日期插件bootstrap-datetimepicker的使用
js日期插件——bootstrap-datetimepicker的使用心得: 在大多说的web项目中,都有日期选择器的使用.如果自己写一个日期选择器的话,费时又费力,而且不一定能写出来_(:3 」∠) ...
- tomcat中配置JNDI方法
1.项目中spring的数据源配置: <bean id="dataSource" class="org.springframework.jndi.JndiObjec ...
- LTE:上行调度请求(Scheduling Request,SR) LTE:下行资源分配类型
http://blog.sina.com.cn/s/blog_927cff010101a7yh.html 上行调度请求(Scheduling Request,SR) 如果UE没有上行数据要传输,eNo ...
- kkpager的改进,Ajax数据变化但是页码不变的问题,kkpagerajax
最近做项目用到了kkpager来做分页,在一个页面只是调用一次的时候不会出现问题,但是在一个页面多次调用就出现问题了. 在网上搜集了好久,终于找到了解决方法,记录下来方便以后使用.希望也可以方便需要的 ...
- Zebra - zebra command to get printer error and warning status
1 Flag2 Nibble 16-93 Nibble 8-44 Nibble 35 Nibble 26 Nibble 1
- 【题解】SDOI2018战略游戏
被CNST的大小卡了好久.一定要开到18呀…… 首先,遇到这种带各种各样环的图先考虑是不是可以建立圆方树,在圆方树上求出答案.然后转化为圆方树之后,我们就将图转化到了树上.答案非常的明显:只要一个圆点 ...
- cf 442 D. Olya and Energy Drinks
cf 442 D. Olya and Energy Drinks(bfs) 题意: 给一张\(n \times m(n <= 1000,m <= 1000)\)的地图 给出一个起点和终点, ...
- 如何用Ajax传一个数组数据
PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便.但是还是有解决办法的,就是利用javascript做一下预处 理.多个同名复选框在javascript中还是以数组的 ...