我正在为Discord机器人编写代码,该机器人可以搜索不同的游戏托管站点。它使用Robobrowser在页面的html中搜索图像和描述。
之前,我没有问题。但是,我刚刚为Google Play商店添加了一个保护套,现在告诉我“任务已销毁,但仍在等待中!”当它试图通过GPS链接获取这些物品时。
我不知道为什么会这样,也不知道如何解决。我查找了所有其他“任务已被破坏...”案例,但没有一个与我的相似。
这是我的代码:
我尝试将其线程化并等待。不能等待Robobrowser,所以没有用。线程也不起作用,因为我需要函数返回字符串。我知道有可能在使用其他线程时返回某些内容,但是对于我要修复的内容来说太复杂了。
def get_embed_caption(url):
print("Getting caption")
desc = None
if url != "No Link":
try:
browser.open(url)
desc = "something"
except:
print("Caption ERROR with url")
desc = None
if desc != None:
if "itch.io" in url and " " not in url:
parse = browser.parsed
parse = str(parse)
pos2 = parse.find("og:description")
pos1 = parse.rfind('content=', 0, pos2)
desc_type = parse[pos1+8:pos1+9]
pos2 = parse.rfind(desc_type, 0, pos2-2)
pos1 = parse.find(desc_type, pos1)
desc = parse[pos1+1:pos2]
if len(desc) > 1000:
desc = desc[:1000]
if "/><" in desc:
pos = parse.find("formatted_description user_formatted")
pos = parse.find("<p>", pos)
desc = parse[pos+3:parse.find('</p>', pos)]
elif "steam" in url and " " not in url:
parse = browser.parsed
parse = str(parse)
pos = parse.find("game_description_snippet")
pos = parse.find('"', pos)
pos = parse.find('>', pos)
desc = parse[pos+1:parse.find('<', pos+1)]
elif "play.google" in url and " " not in url:
parse = browser.parsed
parse = str(parse)
pos = parse.find('aria-label="Description"')
print(parse[pos:pos+20])
pos = parse.rfind("content", 0, pos)
print(parse[pos:pos+20])
pos = parse.find('"', pos)
print(parse[pos:pos+20])
desc = parse[pos+1:parse.find('"', pos+1)]
else:
print("No caption")
desc = None
if desc != None:
desc = desc.replace("<p>", "")
desc = desc.replace("</p>", "")
desc = desc.replace("<em>", "`")
desc = desc.replace("</em>", "`")
desc = desc.replace("<br>", "")
desc = desc.replace("<br/>", "")
return desc
Task was destroyed but it is pending!
task: <Task pending coro=<Client._run_event() running at C:\Users\Gman\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\client.py:307> wait_for=<Future pending cb=[BaseSelectorEventLoop._sock_connect_done(696)(), <TaskWakeupMethWrapper object at 0x0000000005DEAA98>()]>>
似乎可以顺利完成该过程,但是当它完成时,它就会崩溃。
答案 0 :(得分:0)
Google Play商店中有很多乱码HTML,这可能会导致故意在此进行网页抓取。这导致解析页面花费了超过10秒钟的时间。但是,我不知道是什么原因导致任务自毁。
解决方法是使用Python的play-scraper库,该库的速度提高了20倍,收集信息的时间不到半秒。