Python: 如何使用 Snscrape 遍历 Twitter 用户列表?
Python: How to iterate through a list of Twitter users using Snscrape?
我试图通过用户列表检索推文,但是在 snscrape 函数中,这个参数在引号内,这使得用户名被视为固定输入
import snscrape.modules.twitter as sntwitter
tweets_list1 = []
users_name = [{'username':'@bbcmundo'},{'username':'@nytimes'}]
for i,tweet in enumerate(sntwitter.TwitterSearchScraper('from:{}').get_items().format(username)):
if i>100:
break
tweets_list1.append([tweet.date, tweet.id, tweet.content, tweet.url,\
tweet.user.username, tweet.user.followersCount,tweet.replyCount,\
tweet.retweetCount, tweet.likeCount, tweet.quoteCount, tweet.lang,\
tweet.outlinks, tweet.media, tweet.retweetedTweet, tweet.quotedTweet,\
tweet.inReplyToTweetId, tweet.inReplyToUser, tweet.mentionedUsers,\
tweet.coordinates, tweet.place, tweet.hashtags, tweet.cashtags])
作为输出 Python 得到:
`AttributeError: 'generator' object has no attribute 'format'
此代码工作正常,用用户名替换花括号并删除 .format 属性。如果您想复制此代码,请确保使用以下方式安装 snscrape 库:
pip install git+https://github.com/JustAnotherArchivist/snscrape.git
非常感谢您能给我的任何指导。
我在编写这段代码时发现了一些错误。所以,我想与大家分享,以防万一你需要它并克服你对这个相同或类似问题的困扰:
首先:我更改了 users_name 格式,从字典到列表项。
其次:我把格式属性放在了正确的位置。文本输入功能后立即
第三:我添加了一个嵌套循环来抓取每个 Twitter 用户帐户
users_name = ['bbcmundo','nytimes']
for n, k in enumerate(users_name):
for i,tweet in enumerate(sntwitter.TwitterSearchScraper('from:{}'.format(users_name[n])).get_items()):
if i>100:
break
tweets_list1.append([tweet.date, tweet.id, tweet.content, tweet.url,\
tweet.user.username, tweet.user.followersCount,tweet.replyCount,\
tweet.retweetCount, tweet.likeCount, tweet.quoteCount, tweet.lang,\
tweet.outlinks, tweet.media, tweet.retweetedTweet, tweet.quotedTweet,\
tweet.inReplyToTweetId, tweet.inReplyToUser, tweet.mentionedUsers,\
tweet.coordinates, tweet.place, tweet.hashtags, tweet.cashtags])
希望对您有所帮助
我试图通过用户列表检索推文,但是在 snscrape 函数中,这个参数在引号内,这使得用户名被视为固定输入
import snscrape.modules.twitter as sntwitter
tweets_list1 = []
users_name = [{'username':'@bbcmundo'},{'username':'@nytimes'}]
for i,tweet in enumerate(sntwitter.TwitterSearchScraper('from:{}').get_items().format(username)):
if i>100:
break
tweets_list1.append([tweet.date, tweet.id, tweet.content, tweet.url,\
tweet.user.username, tweet.user.followersCount,tweet.replyCount,\
tweet.retweetCount, tweet.likeCount, tweet.quoteCount, tweet.lang,\
tweet.outlinks, tweet.media, tweet.retweetedTweet, tweet.quotedTweet,\
tweet.inReplyToTweetId, tweet.inReplyToUser, tweet.mentionedUsers,\
tweet.coordinates, tweet.place, tweet.hashtags, tweet.cashtags])
作为输出 Python 得到:
`AttributeError: 'generator' object has no attribute 'format'
此代码工作正常,用用户名替换花括号并删除 .format 属性。如果您想复制此代码,请确保使用以下方式安装 snscrape 库:
pip install git+https://github.com/JustAnotherArchivist/snscrape.git
非常感谢您能给我的任何指导。
我在编写这段代码时发现了一些错误。所以,我想与大家分享,以防万一你需要它并克服你对这个相同或类似问题的困扰:
首先:我更改了 users_name 格式,从字典到列表项。
其次:我把格式属性放在了正确的位置。文本输入功能后立即
第三:我添加了一个嵌套循环来抓取每个 Twitter 用户帐户
users_name = ['bbcmundo','nytimes']
for n, k in enumerate(users_name):
for i,tweet in enumerate(sntwitter.TwitterSearchScraper('from:{}'.format(users_name[n])).get_items()):
if i>100:
break
tweets_list1.append([tweet.date, tweet.id, tweet.content, tweet.url,\
tweet.user.username, tweet.user.followersCount,tweet.replyCount,\
tweet.retweetCount, tweet.likeCount, tweet.quoteCount, tweet.lang,\
tweet.outlinks, tweet.media, tweet.retweetedTweet, tweet.quotedTweet,\
tweet.inReplyToTweetId, tweet.inReplyToUser, tweet.mentionedUsers,\
tweet.coordinates, tweet.place, tweet.hashtags, tweet.cashtags])
希望对您有所帮助