如何调整 Nitter Scraper 实时打印新推文?

问题描述 投票:0回答:1

我正在使用 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。

任何有关实现这一点的最佳方法的建议将不胜感激。

谢谢你。

python selenium-webdriver web-scraping scrapy
1个回答
0
投票

将该代码埋入函数中:

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)
© www.soinside.com 2019 - 2024. All rights reserved.