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)结合起来了,很有实际意义,本文就带大家 ...
随机推荐
- 实用的placeholder插件,兼容IE下的placeholder,jquery插件
placeholder在IE下无法兼容 ,下面的插件很好的处理了这个问题,拿去不谢 /* * jQuery placeholder, fix for IE6,7,8,9 * @website itmy ...
- Leetcode. 回文字符串的分割和最少分割数
Q1: 回文字符串的分割 Given a string s, partition s such that every substring of the partition is a palindrom ...
- LeetCode 23 ——合并 K 个排序链表
1. 题目 2. 解答 2.1. 方法一 在 合并两个有序链表 的基础上,我们很容易想到第一种解法,首先我们将第一个链表和第二个链表合并成一个新的链表,然后再往后依次合并接下来的每个链表即可. 假设每 ...
- 分词(Tokenization) - NLP学习(1)
自从开始使用Python做深度学习的相关项目时,大部分时候或者说基本都是在研究图像处理与分析方面,但是找工作反而碰到了很多关于自然语言处理(natural language processing: N ...
- (转载)Linux进程间通信
(在学习linux进程通信,看到一篇很好的文章,转载过来,原文地址是http://www.cnblogs.com/linshui91/archive/2010/09/29/1838770.html) ...
- MD5消息摘要算法
Message Digest 5(消息摘要算法)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护. MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩" ...
- C++关于堆的函数
建立堆 make_heap(_First, _Last, _Comp) 默认是建立最大堆的.对int类型,可以在第三个参数传入greater<int>()得到最小堆. 在堆中添加数据 ...
- [剑指Offer] 20.包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. [思路1]两个栈Stack和Min,Stack为当前栈中元素,Min为与Stack中元素一一对应的当前栈最小值. cl ...
- 当xml结构很深时候 可以通过父节点删除子元素
当xml结构很深时候 可以通过父节点删除子元素
- 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...