为啥我在尝试运行我的 Twitter 天气机器人时会收到此错误

Posted

技术标签:

【中文标题】为啥我在尝试运行我的 Twitter 天气机器人时会收到此错误【英文标题】:Why do i get this error when trying to run my Twitter weather bot为什么我在尝试运行我的 Twitter 天气机器人时会收到此错误 【发布时间】:2021-07-18 00:31:33 【问题描述】:
def reply_to_tweet():
    print("retrieving and replying to tweets...")
    last_seen_tweet = read_last_seen(FILE_NAME)
    # mentions_timeline() returns a list of 20 most recent mentions
    mentions = api.mentions_timeline(last_seen_tweet, tweet_mode="extended")

    # reversing to read old tweets first
    for mention in reversed(mentions):
        print(str(mention.id) + " - " + mention.full_text)
        last_seen_tweet = mention.id
        store_last_seen(FILE_NAME, last_seen_tweet)
        if "#" in mention.full_text.lower():
            print("found #")

            location = get_location(mention.full_text)
            weather = get_weather(location)

            # responding to tweet mention
            api.update_status("@" + mention.user.screen_name + weather, mention.id)

def get_location(tweet):
    # takes tweet and returns only the substring attached to hashtag
    tweet_location = [i.strip("#") for i in tweet.split() if i.startswith("#")[0]]
    tweet_location += " today weather.com"
    return tweet_location

def get_weather(query):
    for url in search(query, stop=1):
        print("Results is " + url)

    #this code sends a request and reads the webpage enclsed to the request
    request = Request(url, headers="User-Agent": "Mozilla/5.0")

    webpage = urlopen(request).read()
    soup = BeautifulSoup(webpage, "html.parser")

    try:
        title = soup.findAll("span", "today-daypart-title")[0].string 
        phrase = soup.findAll("span", "today-daypart-wxphrase")[0].string
    except IndexError as e:
        forecast = (" could not find the weather, check back later")
        print(e)
    else:
        forecast = (" forecast for " + title + " is " + phrase)
        print(forecast)

    return forecast

while True:
    reply_to_tweet()
    time.sleep(15)

然后我调用 reply_to_tweet(),它搜索并显示推文,但是当它尝试我得到的位置时: TypeError:'bool' 对象不可下标 我对机器人和 api 还很陌生,我正在使用 BeautifulSoup、googlesearch 和 tweepy

【问题讨论】:

能否编辑您的帖子以包含get_weather()reply_to_tweet() 的代码? 【参考方案1】:

您似乎正在尝试对布尔函数 startswith() 进行字符串切片,请尝试从 tweet_location = [i.strip("#") for i in tweet.split() if i.startswith("#")[0]] 中删除 [0]

【讨论】:

感谢您的回答,我尝试了您的建议,但出现了一个新错误“TypeError: quote_from_bytes() expected bytes” @J_Simm 试试这个。 tweet_location = [i.strip("#") for i in tweet.split() if i.startswith("#")][0] 谢谢,这很烦人,因为它只是那件小事,但是由于某种原因它不会得到天气,它不会拉出错误它只是说“列表索引超出范围” .感谢您的帮助。 有没有想过为什么会出现这个索引错误? @J_Simm 你到底想通过迭代“tweet_location”来提取什么?

以上是关于为啥我在尝试运行我的 Twitter 天气机器人时会收到此错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 R 中运行 wget 时会收到 127 的系统状态错误?

为啥我的 twitter oauth 访问令牌无效/过期

为啥我在尝试运行我的 iOS 应用程序时收到错误“找不到 FirebaseCore/FirebaseCore.h”文件

为啥我在尝试编辑离开语音频道的用户时会收到 DiscordAPIError?

为啥,当我在 WCF 服务中模拟时,当我尝试运行 LINQ to SQL 查询时,我的服务不能加载 System.Transactions?

twitter bot 和 python 的 Tweepy 问题