Python 我的歌词机器人不会向服务器发送字符串
我已经用python创建了一个歌词机器人。我正在使用robobrowser删除genius.com上的歌词,但它不会将歌词发送给团队Python 我的歌词机器人不会向服务器发送字符串,python,python-3.x,instant-messaging,robobrowser,python-textprocessing,Python,Python 3.x,Instant Messaging,Robobrowser,Python Textprocessing,我已经用python创建了一个歌词机器人。我正在使用robobrowser删除genius.com上的歌词,但它不会将歌词发送给团队 if ( parser.getCommand() == 'GroupMESG'): if(parser.getPayload().lower()[:7]=='!lyrics'): #Send wait message in the group parser.sendGroupMessage(parser.getTargetI
if ( parser.getCommand() == 'GroupMESG'):
if(parser.getPayload().lower()[:7]=='!lyrics'):
#Send wait message in the group
parser.sendGroupMessage(parser.getTargetID(), "/me Please wait.. I am finding your song.")
browser = RoboBrowser(history=True)
browser.open('http://genius.com/')
# Search for Porcupine Tree
form = browser.get_form(action='/search')
form # <RoboForm q=>
form['q'].value = parser.getPayload().lower()[8:]
browser.submit_form(form)
# Look up the first song
songs = browser.select('.song_link')
browser.follow_link(songs[0])
lyrics = browser.select('.lyrics')
lyrics[0].text
print(lyrics[0].text) ## it prints the songs
##it is not sending lyrics in the group :(
parser.sendGroupMessage(parser.getTargetID(), lyrics[0].text)
第二行是打字错误吗?这可能会导致python代码中出现错误
form = browser.get_form(action='/search')
form # <RoboForm q=>
form['q'].value = parser.getPayload().lower()[8:]
要消除警告,请遵循来自的建议 将解析器传递给RoboBrowser构造函数:
browser = RoboBrowser(parser='html.parser')
我的个人解决方案如果您键入的艺术家姓名或歌曲不正确,则很容易出错,但不会得到结果
import bs4, requests
song = input('Input artist then song name\n')
website = requests.get(f'https://genius.com/{song.replace(" ", "-")}-lyrics')
websiteParser = bs4.BeautifulSoup(website.text, 'html.parser')
lyricSelect = websiteParser.select('.lyrics')
lyrics = lyricSelect[0].text.strip()
print(lyrics)
这使用了genius链接格式化的方式来发挥其优势:艺术家名称,然后是歌曲名称,所有链接都与-。输入要求将所有这些信息除以空格,然后将空格替换为-并插入链接,然后将链接解析为歌词,歌词始终位于css选择器“.lyms”下,然后,它会将html文本中的标签去掉,只将歌词打印为文本。我已将您的图像添加到您的问题中,但建议您将错误粘贴为文本而不是图像。好的,谢谢@lafexlost这不是一个错误,这是一个警告,它会告诉您如何修复。是否正在发送,请稍候。。。加入团队?谢谢你,伙计。。它解决了警告问题,但我的程序仍然无法将歌词发送到instant messenger服务器。它可以在命令行上打印歌词,那么为什么它不能在服务器上发送呢?如果你的主要问题是向一个组发送文本,那么就不要再考虑屏幕抓取,只关注即时通讯器。把你的例子减少到尽可能小的程度。请参见如何创建。[browser.get_form]从HTML返回一个。第二行似乎没用,但却是正确的。