我正在使用 ntscraper 库从特定用户获取推文。目前,该脚本获取最新的推文,但它仅提取脚本运行时预先存在的推文。这是我正在使用的代码:
from ntscraper import Nitter
import pandas as pd
# Initialize the scraper
scraper = Nitter()
# Fetch the most recent tweet (limit to 1)
tweets_data = scraper.get_tweets("Vader_AI_", mode='user', number=1)
# Extract the latest tweet
if tweets_data and 'tweets' in tweets_data and len(tweets_data['tweets']) > 0:
latest_tweet = tweets_data['tweets'][0] # First tweet is the most recent
print("Latest Tweet:")
print(f"Text: {latest_tweet['text']}")
print(f"Link: {latest_tweet['link']}")
# Optional: Save to CSV
df = pd.DataFrame([latest_tweet])
df.to_csv('latest_tweet.csv', index=False)
print("Latest tweet saved to latest_tweet.csv")
else:
print("No tweets found.")
有没有办法对此进行调整,使其持续监控 Twitter 页面并在新推文发布后立即实时打印? 本质上,我希望脚本等待并检测新推文,而不是获取旧推文。
是否需要像 Selenium 或 Scrapy 这样的东西,或者可以单独使用 ntscraper 来实现吗?我正在尝试避免使用 API。
任何有关实现这一点的最佳方法的建议将不胜感激。
谢谢你。
将该代码埋入函数中:
def fetch(scraper):
# Fetch the most recent tweet (limit to 1)
tweets_data = scraper.get_tweets("Vader_AI_", mode='user', number=1)
# Extract the latest tweet
if tweets_data and 'tweets' in tweets_data and len(tweets_data['tweets']) > 0:
latest_tweet = tweets_data['tweets'][0] # First tweet is the most recent
print("Latest Tweet:")
print(f"Text: {latest_tweet['text']}")
...
现在您已设置好监控新推文。
from time import sleep
...
scraper = Nitter()
while True:
fetch(scraper)
sleep(60)