了解 tweepy 的状态对象

如何解决了解 tweepy 的状态对象

我一直在与 tweepy streaming API 合作,我注意到一件事。 status 对象的响应不是纯粹的 JSON 它还有一些附加信息。这是我的问题:

如果我需要推文的文本内容,我必须执行status.text,它位于_json 字典/json 对象中。但是,如果我需要媒体或全文,我必须做 status.entities['media'][0]['media_url_https']status.extended_tweet['full_text'],尽管 entitiesextended_tweet 都在另一个字典中_json 对象。

为什么我们必须使用 dot (.) notation 来访问 _json 中的外部字典,而使用 [] notation 来访问内部字典中的值?

我理解 [] 符号,但点符号是什么意思?

状态对象

Status(_api=<tweepy.api.API object at 0x7f6851708190>,_json={'created_at': 'Mon Feb 01 10:58:31 +0000 2021','id': 1356195217687392256,'id_str': '1356195217687392256','text': 'hiii IWD1FKPH0JEFS2PNH7KBSPXQ2EAZVORAWCE2580MWFW4N0OAFM63WI06CAZ4OYBLMPATC4VL9OAMFH86K660EXVMP53M36PN0FTU1ETKBIIP7D…,'display_text_range': [0,140],'source': '<a href="https://mobile.twitter.com" rel="nofollow">Twitter Web App</a>','truncated': True,'in_reply_to_status_id': None,'in_reply_to_status_id_str': None,'in_reply_to_user_id': None,'in_reply_to_user_id_str': None,'in_reply_to_screen_name': None,'user': {'id': 1355079285812453379,'id_str': '1355079285812453379','name': 'db1-testing','screen_name': 'Db1Testing','location': None,'url': None,'description': None,'translator_type': 'none','protected': False,'verified': False,'followers_count': 0,'friends_count': 0,'listed_count': 0,'favourites_count': 0,'statuses_count': 29,'created_at': 'Fri Jan 29 09:04:24 +0000 2021','utc_offset': None,'time_zone': None,'geo_enabled': False,'lang': None,'contributors_enabled': False,'is_translator': False,'profile_background_color': 'F5F8FA','profile_background_image_url': '','profile_background_image_url_https': '','profile_background_tile': False,'profile_link_color': '1DA1F2','profile_sidebar_border_color': 'C0DEED','profile_sidebar_fill_color': 'DDEEF6','profile_text_color': '333333','profile_use_background_image': True,'profile_image_url': 'http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png','profile_image_url_https': 'https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png','default_profile': True,'default_profile_image': False,'following': None,'follow_request_sent': None,'notifications': None},'geo': None,'coordinates': None,'place': None,'contributors': None,'is_quote_status': False,'extended_tweet': {'full_text': 'hiii IWD1FKPH0JEFS2PNH7KBSPXQ2EAZVORAWCE2580MWFW4N0OAFM63WI06CAZ4OYBLMPATC4VL9OAMFH86K660EXVMP53M36PN0FTU1ETKBIIP7DMBJ3XCQN2XXXA1KA6VSCW292X86SJGHWEH3L1J2HVLV42SHPV8LCVZYY6S762GJ2MOBF3J6IH0,189],'entities': {'hashtags': [],'urls': [],'user_mentions': [],'symbols': [],'media': [{'id': 1356193076398731264,'id_str': '1356193076398731264','indices': [190,213],'media_url': 'http://pbs.twimg.com/media/EtIqauWXMAAZsTn.jpg','media_url_https': 'https://pbs.twimg.com/media/EtIqauWXMAAZsTn.jpg','display_url': 'pic.twitter.com/BWiI8Lh6tW','expanded_url': 'https://twitter.com/Db1Testing/status/1356195217687392256/photo/1','type': 'photo','sizes': {'thumb': {'w': 150,'h': 150,'resize': 'crop'},'small': {'w': 680,'h': 665,'resize': 'fit'},'medium': {'w': 827,'h': 809,'large': {'w': 827,'resize': 'fit'}}}]},'extended_entities': {'media': [{'id': 1356193076398731264,'resize': 'fit'}}}]}},'quote_count': 0,'reply_count': 0,'retweet_count': 0,'favorite_count': 0,'urls': [{ 'expanded_url': 'https://twitter.com/i/web/status/1356195217687392256','display_url': 'twitter.com/i/web/status/1…','indices': [117,140]}],'symbols': []},'favorited': False,'retweeted': False,'possibly_sensitive': False,'filter_level': 'low','lang': 'ht','timestamp_ms': '1612177111442'},created_at=datetime.datetime(2021,2,1,10,58,31),id=1356195217687392256,id_str='1356195217687392256',text='hiii IWD1FKPH0JEFS2PNH7KBSPXQ2EAZVORAWCE2580MWFW4N0OAFM63WI06CAZ4OYBLMPATC4VL9OAMFH86K660EXVMP53M36PN0FTU1ETKBIIP7D…,display_text_range=[0,source='Twitter Web App',source_url='https://mobile.twitter.com',truncated=True,in_reply_to_status_id=None,in_reply_to_status_id_str=None,in_reply_to_user_id=None,in_reply_to_user_id_str=None,in_reply_to_screen_name=None,author=User(_api=<tweepy.api.API object at 0x7f6851708190>,_json={'id': 1355079285812453379,id=1355079285812453379,id_str='1355079285812453379',name='db1-testing',screen_name='Db1Testing',location=None,url=None,description=None,translator_type='none',protected=False,verified=False,followers_count=0,friends_count=0,listed_count=0,favourites_count=0,statuses_count=29,29,9,4,24),utc_offset=None,time_zone=None,geo_enabled=False,lang=None,contributors_enabled=False,is_translator=False,profile_background_color='F5F8FA',profile_background_image_url='',profile_background_image_url_https='',profile_background_tile=False,profile_link_color='1DA1F2',profile_sidebar_border_color='C0DEED',profile_sidebar_fill_color='DDEEF6',profile_text_color='333333',profile_use_background_image=True,profile_image_url='http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png',profile_image_url_https='https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png',default_profile=True,default_profile_image=False,following=False,follow_request_sent=None,notifications=None),user=User(_api=<tweepy.api.API object at 0x7f6851708190>,'geo_enabled':False,geo=None,coordinates=None,place=None,contributors=None,is_quote_status=False,extended_tweet={
'full_text': 'hiii IWD1FKPH0JEFS2PNH7KBSPXQ2EAZVORAWCE2580MWFW4N0OAFM63WI06CAZ4OYBLMPATC4VL9OAMFH86K660EXVMP53M36PN0FTU1ETKBIIP7DMBJ3XCQN2XXXA1KA6VSCW292X86SJGHWEH3L1J2HVLV42SHPV8LCVZYY6S762GJ2MOBF3J6IH0,quote_count=0,reply_count=0,retweet_count=0,favorite_count=0,entities={'hashtags': [],'urls': [{'expanded_url': 'https://twitter.com/i/web/status/1356195217687392256',favorited=False,retweeted=False,possibly_sensitive=False,filter_level='low',lang='ht',timestamp_ms='1612177111442')

Stackoverflow 的答案 here 建议使用 status.extended_tweet.full_text,但在我执行 status.extended_tweet['full_text'] 之前它不起作用

解决方法

主要区别在于 Tweepy 有一些预定义的对象(状态、用户)但经常使用字典(随着数据模型的发展它可能更灵活)。

status.user 是一个 User 对象,例如

print(type(status.user))  # <class 'tweepy.models.User'>
print(status.user.screen_name) # beppecatanese

extended_tweet(当它存在时)包含一个属性字典,例如

print(type(status.extended_tweet)) # <class 'dict'>

entities 是各种对象(主题标签、媒体、URL 等)的数组,再次包装在字典中

print(type(tweet.entities))  # <class 'dict'>
print(tweet.entities['urls'][0]) # First url
print(type(tweet.entities['urls'][0]))  # <class 'dict'>
print(tweet.entities['urls'][0]['expanded_url']) # expanded url of first url

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res