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)结合起来了,很有实际意义,本文就带大家 ...
随机推荐
- 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6
孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...
- C++ 学习笔记之——文件操作和文件流
1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...
- Codeforces Round #326 Div.1 C.Duff in the Army 树上倍增
题意概述: 给出一棵N个结点的树,然后有M个居民分散在这棵树的结点上(允许某个结点没有居民).现在给出一些询问形如u,v,a,定义k=min(x,a),其中x表示的是u->v路径上的居民数量.将 ...
- DFS(5)——hdu1728逃离迷宫
一.题目回顾 题目链接:逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地 ...
- HDU 2175 汉诺塔IX
http://acm.hdu.edu.cn/showproblem.php?pid=2175 Problem Description 1,2,...,n表示n个盘子.数字大盘子就大.n个盘子放在第1根 ...
- linux mysql 链接数太小
Data source rejected establishment of connection, message from server: "Too many connections&q ...
- SQL 取数值小数后两位,但不四舍五入
select round('1.67789',2,1) /* 1.67*/
- 附录A培训实习生-面向对象基础类和实例(1)
对象是一个自包含的实体,用一组可识别的特性和行为来标识. 面向对象编程,Object-Oriented Programming,其实就是针对对象进行编程的意思. 类就是具有相同属性和功能的对象的抽象的 ...
- hdu 1787 GCD Again (欧拉函数)
GCD Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- # centos7下FFmpeg环境部署记录
# centos7下FFmpeg环境部署记录 随着视频在网站上的应用越来越多,越来越多的网站服务器需要支持视频转码,视频压缩,FFmpeg是目前最好用的网站服务器后台转码程序,应用最多.FFmpeg是 ...