Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自请求/bs4的python unicode字符_Python_Unicode_Beautifulsoup_Python Requests - Fatal编程技术网

来自请求/bs4的python unicode字符

来自请求/bs4的python unicode字符,python,unicode,beautifulsoup,python-requests,Python,Unicode,Beautifulsoup,Python Requests,我有一个脚本,使用请求和bs4从metrolyrics获取歌曲的歌词 问题是,当我打印它时,它会显示类似这样的内容(歌词的一部分) 拉比、爸爸、安拉、喇嘛、伊玛目、毕比、达摩、苏拉、托拉、方格、维诺、卡什、阿拉尔、赎罪日、夸雷西马、斋月 什么时候应该是这样 拉比、爸爸、喇嘛、伊玛目、毕比、达摩、苏拉、律法、方格、维诺、卡什、,ḥalāl、赎罪日、夸雷西玛、斋月 我使用的代码 import requests from bs4 import BeautifulSoup import os try:

我有一个脚本,使用请求和bs4从metrolyrics获取歌曲的歌词

问题是,当我打印它时,它会显示类似这样的内容(歌词的一部分)

拉比、爸爸、安拉、喇嘛、伊玛目、毕比、达摩、苏拉、托拉、方格、维诺、卡什、阿拉尔、赎罪日、夸雷西马、斋月

什么时候应该是这样

拉比、爸爸、喇嘛、伊玛目、毕比、达摩、苏拉、律法、方格、维诺、卡什、,ḥalāl、赎罪日、夸雷西玛、斋月

我使用的代码

import requests
from bs4 import BeautifulSoup
import os

try:
    from urllib.parse import quote_plus
except ImportError:
    from urllib import quote_plus

def get_lyrics(song_name):
    song_name += ' metrolyrics'
    name = quote_plus(song_name)
    hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11'
           '(KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
           'Accept-Language': 'en-US,en;q=0.8',
           'Connection': 'keep-alive'}

    url = 'http://www.google.com/search?q=' + name

    result = requests.get(url, headers=hdr).text
    link_start = result.find('http://www.metrolyrics.com')

    if(link_start == -1):
        return("Lyrics not found on Metrolyrics")

    link_end = result.find('html', link_start + 1)
    link = result[link_start:link_end + 4]


    lyrics_html = requests.get(link, headers={
                               'User-Agent': 'Mozilla/5.0 (Macintosh; Intel'
                               'Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, '
                               'like Gecko) Chrome/55.0.2883.95 Safari/537.36'
                               }
                               ).text

    soup = BeautifulSoup(lyrics_html, "lxml")
    raw_lyrics = (soup.findAll('p', attrs={'class': 'verse'}))
    paras = []
    try:
        final_lyrics = unicode.join(u'\n', map(unicode, raw_lyrics))
    except NameError:
        final_lyrics = str.join(u'\n', map(str, raw_lyrics))

    final_lyrics = (final_lyrics.replace('<p class="verse">', '\n'))
    final_lyrics = (final_lyrics.replace('<br/>', ' '))
    final_lyrics = final_lyrics.replace('</p>', ' ')
    return (final_lyrics)
导入请求
从bs4导入BeautifulSoup
导入操作系统
尝试:
从urllib.parse导入quote_plus
除恐怖外:
从urllib导入quote_plus
def get_歌词(歌曲名称):
song_name+=“metrolyrics”
名称=引用加上(歌曲名称)
hdr={'User-Agent':'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.11'
“(KHTML,像壁虎一样)Chrome/23.0.1271.64 Safari/537.11”,
‘接受语言’:‘en-US,en;q=0.8’,
“连接”:“保持活动状态”}
url='1〕http://www.google.com/search?q=“+姓名
结果=requests.get(url,headers=hdr).text
link\u start=result.find('http://www.metrolyrics.com')
如果(链接开始==-1):
返回(“Metrolyrics上未找到歌词”)
link\u end=result.find('html',link\u start+1)
链接=结果[链接开始:链接结束+4]
歌词\u html=requests.get(链接、标题={
“用户代理”:“Mozilla/5.0(Macintosh;英特尔”
“Mac OS X 10_12_1)AppleWebKit/537.36(KHTML,”
‘像壁虎一样)铬/55.0.2883.95狩猎/537.36’
}
).文本
汤=美丽的汤(歌词“lxml”)
原始歌词=(soup.findAll('p',attrs={'class':'verse'}))
第[]段
尝试:
final\u歌词=unicode.join(u'\n',map(unicode,原始歌词))
除名称错误外:
最终歌词=str.join(u'\n',map(str,原始歌词))
最终歌词=(最终歌词。替换(“

”,“\n”)) 最终歌词=(最终歌词。替换(“
,”) 最终歌词=最终歌词。替换(“

”,“) 返回(最终歌词)
我尝试过
.encode('utf-8')
.encode('unicode-escape')和重新转换,但没有解决方案


我有另一个脚本,其中我使用了musixmatch api,在那里它显示了正确的unicode

我在
获取歌词
函数中做了一些小改动:

return final_lyrics.encode('latin1').decode('utf-8')
并得到了理想的输出:

# python2
print get_lyrics('kashèr')
...
Rabbi, Papa, Allah, Lama, Imam, Bibbia, Dharma, Sura, Torah, Pane, Vino, Kashèr, Ḥalāl, Yom Kippur, Quaresima, Ramadan
...

我已经试过了,在返回后使用它不起作用,但在返回时使用它却起作用